Ctrl K

Два садовника и доливки

Средняя
В ряд стоят n грядок с номерами от 0 до n - 1, грядке i нужно needs[i] единиц воды. Поливают двое: левый садовник с лейкой объёмом left_can идёт от грядки 0 вправо, правый с лейкой объёмом right_can — от грядки n - 1 влево. Обе лейки сначала полные, садовники начинают одновременно и тратят на каждую грядку одинаковое время. Если воды в лейке хватает, чтобы целиком полить очередную грядку, садовник просто поливает её. Иначе он мгновенно доливает лейку до краёв и после этого поливает. Если оба подошли к одной и той же грядке, её поливает тот, у кого в лейке сейчас больше воды; при равенстве — левый. Верните, сколько всего раз пришлось доливать лейки.
Пример 1
needs=[3, 4, 3, 5], left_can=6, right_can=7 → 2

Левый поливает грядку 0 (остаётся 3), правый — грядку 3 (остаётся 2). Левому не хватает на грядку 1 — он доливает лейку; правому не хватает на грядку 2 — тоже доливает. Итого 2 доливки.

Пример 2
needs=[2, 6, 2], left_can=6, right_can=6 → 1

После первых грядок у обоих по 4 единицы — поровну, поэтому среднюю грядку поливает левый. Ему не хватает 6 единиц, нужна одна доливка.

Пример 3
needs=[7], left_can=7, right_can=9 → 0
Ограничения
  • n = len(needs)
  • 1 ≤ n ≤ 10⁵
  • 1 ≤ needs[i] ≤ 10⁶
  • max(needs) ≤ left_can, right_can ≤ 10⁹
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиТри в ряд до упора СредняяРасставить пробелы по меткам СредняяПлюс, минус, плюс СредняяРазложить по трём кучкам СредняяНайм с двух концов очереди Средняя
загружаем Python…
Вход
needs=[3, 4, 3, 5], left_can=6, right_can=7
Ожидается
2

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