Ctrl K

Равные суммы окон на кольце

Средняя
Числа массива ring стоят по кругу: после последнего элемента снова идёт первый. *Окно* — это width подряд идущих элементов по кругу, начиная с любой позиции; всего окон столько же, сколько элементов. За один шаг можно увеличить или уменьшить любой элемент на 1. Какое наименьшее число шагов нужно, чтобы суммы всех окон стали одинаковыми?
Пример 1
ring=[3, 7, 3, 5], width=2 → 2

Окна длины 2 по кругу: 3+7, 7+3, 3+5, 5+3. Чтобы все суммы совпали, элементы через один должны быть равны, то есть 7 и 5 нужно уравнять. Это 2 шага, например 7 → 5.

Пример 2
ring=[4, 1, 6, 2, 8, 3], width=4 → 6

Здесь n = 6, а окна сдвигаются на 4, поэтому равными должны стать элементы с индексами одной чётности: [4, 6, 8] и [1, 2, 3]. Тянем к медианам 6 и 2: 2 + 2 + 1 + 1 = 6.

Пример 3
ring=[9, 2, 5], width=3 → 0

Окно длины 3 на кольце из трёх чисел — всегда весь массив, сумма одна и та же. Ничего менять не нужно.

Ограничения
  • 1 ≤ width ≤ len(ring) ≤ 10⁵
  • 1 ≤ ring[i] ≤ 10⁹
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиПодтянуть или опустить СредняяОкруглить цены до нужной суммы СредняяСредний мешок СредняяЦена тает с каждой продажей СредняяОдни призы, разные вкусы Средняя
загружаем Python…
Вход
ring=[3, 7, 3, 5], width=2
Ожидается
2

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