Ctrl K

Сжать квадраты разностей

Средняя
Даны два массива целых чисел left и right одной длины n. Их расхождение — сумма (left[i] - right[i])² по всем i. За один ход можно увеличить или уменьшить любой элемент массива на 1. В массиве left можно сделать не больше moves_left ходов, в массиве right — не больше moves_right. Элементы могут при этом стать отрицательными. Верните наименьшее расхождение, которого можно добиться.
Пример 1
left=[3, 8, 1], right=[6, 2, 1], moves_left=2, moves_right=1 → 18

Разности 3, 6 и 0. Все три хода выгодно потратить на самую большую: 6 → 3. Получается 3² + 3² + 0² = 18.

Пример 2
left=[10, 20], right=[0, 0], moves_left=0, moves_right=0 → 500

Ходов нет: 10² + 20² = 500.

Пример 3
left=[4, 4], right=[1, 7], moves_left=10, moves_right=0 → 0

Обе разности равны 3, на их обнуление нужно 6 ходов, а их 10. Ответ 0.

Ограничения
  • 1 ≤ n ≤ 10⁵
  • len(left) = len(right) = n
  • 0 ≤ left[i], right[i] ≤ 10⁵
  • 0 ≤ moves_left, moves_right ≤ 10⁹
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиЦена тает с каждой продажей СредняяСтудии для записи СредняяK-е по величине в упорядоченной таблице СредняяТройки палочек для треугольника СредняяЗадания с перерывом на остывание Средняя
загружаем Python…
Вход
left=[3, 8, 1], right=[6, 2, 1], moves_left=2, moves_right=1
Ожидается
18

«Запустить» — первые 3 теста у тебя в браузере, «Отправить» — все 119 тестов на сервере, включая скрытые.