Ctrl K

Выравнивание полок

Сложная
Вдоль стены стоит ряд полок, shelves[i] — сколько коробок на i-й полке. Нужно, чтобы на всех полках коробок стало поровну. Перемещения идут раундами. За один раунд вы выбираете любое количество полок (хотя бы одну), и каждая выбранная полка одновременно передаёт ровно одну коробку соседней полке — левой или правой. Верните наименьшее число раундов, за которое можно выровнять все полки. Если сделать это невозможно, верните −1.
Пример 1
shelves=[4, 0, 2] → 2

Нужно по 2 коробки на полке. Раунд 1: первая полка отдаёт коробку второй → [3, 1, 2]. Раунд 2: снова → [2, 2, 2]. Ответ 2.

Пример 2
shelves=[0, 0, 8, 0] → 6

Нужно по 2 коробки. Третьей полке надо отдать 6 коробок, а за раунд она отдаёт только одну, поэтому меньше 6 раундов не обойтись — и 6 хватает.

Пример 3
shelves=[1, 2] → -1

3 коробки нельзя поровну разложить на 2 полки — ответ −1.

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

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