t = int(input())
for i in range(t):
n, k = map(int, input().split())
a = list(map(int, input().split()))
srednee = sum(a) / len(a)
if n % 2 == 0:
hinata = a[:len(a) // 2]
kenma = a[len(a) // 2:]
hinata.sort(reverse=True)
kenma.sort(reverse=True)
else:
hinata = a[:len(a) // 2]
kenma = a[(len(a) // 2) + 1:]
if a[len(a) // 2] > srednee:
hinata.append(a[len(a) // 2])
else:
kenma.reverse()
kenma.append(a[len(a) // 2])
kenma.reverse()
hinata.sort(reverse=True)
kenma.sort(reverse=True)
while k > 0:
dlh = len(hinata)
dlk = len(kenma)
srednee = (sum(hinata) + sum(kenma)) / (dlh + dlk)
if dlh == dlk:
if (abs(srednee - hinata[dlh - 1])) > (abs(srednee - kenma[0])):
hinata.remove(hinata[dlh - 1])
k -= 1
else:
kenma.remove(kenma[0])
k -= 1
else:
if dlh > dlk:
hinata.remove(hinata[dlh - 1])
k -= 1
else:
kenma.remove(kenma[0])
k -= 1
print(sum(hinata) - sum(kenma))
Ожидание: делаешь игры.
Реальность: решаешь математические трехэтажные задачи.
Это откуда? Не прочь сам порешать такое
https://contest.yandex.ru/contest/60486/enter/?nc=CG2P7fVq
это задачки яндекса для собеса?
Ага. Говорят на какую - то новую русскую игру набирают команду, типа ответ Ведьмаку.
Динамика, квадратичная что ли? Но увидеть бы ограничения на размеры последовательностей. Обычно это позволяет понять, какую сложность должен иметь итоговый алгоритм - O(n + k) или O(n*k).
Да выглядит как O(n-k)