Ctrl K

Выровнять пресс-окном

Средняя
В ряд стоят столбики из кубиков, их высоты — массив heights. Есть пресс шириной width: за одно нажатие он опускается на width **соседних** столбиков и снимает с каждого из них ровно один кубик. Нажимать можно сколько угодно раз, но пресс целиком должен помещаться в ряд, а столбик высоты 0 под пресс попадать не может (высоты не бывают отрицательными). Верните True, если можно снять все кубики, то есть сделать все высоты нулевыми, и False иначе.
Пример 1
heights=[1, 3, 2, 0], width=2 → True

Столбец 0 можно опустить только прессом на [0, 1]: получаем [0, 2, 2, 0]. Дважды жмём на [1, 2] — и всё по нулям.

Пример 2
heights=[2, 1, 2], width=2 → False

Чтобы обнулить столбец 0, нужно дважды нажать на [0, 1], но столбец 1 при этом ушёл бы ниже нуля.

Пример 3
heights=[4, 0, 7], width=1 → True

Пресс шириной 1 опускает любой столбец отдельно, так что выровнять можно всегда.

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

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