printРабочее место участника

printЗадачи

1163. Игра

Ограничения: время – 1s/2s, память – 32MiB Ввод: input.txt или стандартный ввод Вывод: output.txt или стандартный вывод copy
Послать решение Blockly Посылки Темы Где Обсудить (0)

В некоторой компьютерной игре бои между человеком и компьютером происходят следующим образом. Юниты обоих армий выстраиваются в линию друг против друга таким образом, чтобы каждый юнит одного игрока стоял напротив юнита другого игрока. После расстановки между парами юнитов происходит бой, и более сильный юнит побеждает, а проигравший юнит убирается с доски. Если силы юнитов равны, то побеждает юнит компьютера. Но у человека есть другое преимущество, он расставляет свои юниты после компьютера и может выбирать порядок расстановки. Напишите программу, которая максимизирует суммарную силу юнитов, оставшихся у человека-игрока после боя.
В первой строке входного файла содержится целое число – количество наборов исходных данных `K` (`1\ ≤\ K\ ≤\ 10`). Далее следует `K` блоков из трех строк, каждый блок описывает одну игровую ситуацию. В первой строке блока содержится целое число – количество юнитов `N` (`0\ <\ N\ ≤\ 50`) у каждого из игроков. Во второй строке содержится `N` целых чисел от 1 до 1000, разделенных пробелами – сила юнитов игрока-человека. В третьей строке содержится `N` целых чисел от 1 до 1000, разделенных пробелами – сила юнитов компьютера.
В выходной файл вывести для каждой игровой ситуации вывести строку, содержащую одно целое число – максимальную суммарную силу юнитов, оставшихся у человека-игрока после боя при правильной расстановке.

Пример ввода

2
5
5 15 100 1 5
15 5 100 2 5
10
2 3 4 5 6 7 8 9 10 11
10 9 8 7 6 5 4 3 2 1

Пример вывода

120
65
Примечание: в первой игровой ситуации человек ставит юнит с силой 100 напротив юнита компьютера с силой 15, 15 напротив 5, 5 напротив 2, 5 напротив 5 и 1 напротив 100, теряет два юнита с суммой 6, и у него останется три юнита с суммой 120; во второй игровой ситуации человек не теряет ни одного юнита.
loading