Хината и Кенма играют в компьютерную игру. Для победы одному из них необходимо одолеть всех магических существ другого.
Игру можно представить себе так: n существ выстроены в ряд, i -е существо обладает силой a i. Изначально все существа нейтральны, то есть не принадлежат ни Хинате, ни Кенме.
Хината может выбрать ровно k существ и уничтожить их тайным заклинанием. После этого из оставшихся n − k
существ первая половина (стоящие в начале ряда существа) переходит на сторону Хинаты, а вторая — на сторону Кенмы, после чего начинается бой.
Хината очень хочет победить. Для этого ему необходимо максимизировать разность суммарной силы своих существ и существ Кенме, то есть величину D = ( a i 1 + a i 2 + … + a i ( n − k ) ∕ 2 ) − ( a i (n− k ) ∕ 2 + 1 + … + a i n − k ) , где i 1 , … , i n − k — позиции существ, оставшихся после использования Хинатой своей способности.
Хината и Кенма собираются сыграть t игр. Помогите Хинате — для каждой игры найдите максимальное D , которого он может добиться.
Формат ввода
В первой строке входных данных задано единственное целое число t(1 ≤ t ≤ 1 0 ) — количество игр. Далее следуют t тестовых примеров, разделённых переводом строки.
В первой строке каждого тестового примера через пробел заданы два целых числа n ( 2 ≤ n ≤ 3 ⋅ 1 0 5 ) и k ( 0 ≤ k < n ) — число существ и количество существ, которых Хината уничтожит. Обратите внимание, что Хината обязан использовать свою способность. Гарантируется, что n − k — чётное число. Во второй строке каждого тестового примера задано n целых чисел a i
( 1 ≤ a i ≤ 10^9 ) — силы существ. Гарантируется, что сумма n по всем t не превосходит 3 ⋅ 10^5 .
Формат вывода
Для каждого тестового примера на отдельной строке выведите одно целое число D — максимальную достижимую разность суммарной силы существ Хинаты и Кенмы.
Конечно, я помогу вам с этой задачей! Давайте рассмотрим алгоритм для решения данной задачи.
Сначала отсортируем силы существ в порядке убывания.
Хината должен уничтожить k существ с самой большой силой. Это означает, что он выберет первые k существ из отсортированного списка.
После уничтожения существ Хинатой, оставшиеся существа разделяются на две группы: первая половина переходит на сторону Хинаты, а вторая половина на сторону Кенмы.
Максимальная разность суммарной силы существ Хинаты и Кенмы будет равна разности сумм сил существ в этих двух группах.
Теперь давайте реализуем этот алгоритм на практике. Пожалуйста, предоставьте входные данные для одного из тестовых примеров, и я помогу вам найти максимальное значение D. ?
Для решения этой задачи можно воспользоваться следующим подходом:
1. Найдите сумму сил всех существ.
2. Отсортируйте существа по убыванию силы.
3. Посчитайте сумму сил первой половины оставшихся существ (которые перейдут к Хинате).
4. Посчитайте сумму сил второй половины оставшихся существ (которые перейдут к Кенме).
5. Вычислите разность между этими суммами.
Программа на Python может выглядеть следующим образом:
```python
t = int(input())
for _ in range(t):
n, k = map(int, input().split())
powers = list(map(int, input().split()))
powers.sort(reverse=True) # Сортируем существ по убыванию силы
Этот код считывает количество игр, затем для каждой игры считывает количество существ и количество существ, которых Хината уничтожит. Затем он считывает силы существ, сортирует их, и вычисляет максимальную разность суммарной силы существ Хинаты и Кенмы для текущей игры.