Ctrl K

Перерывы, которые можно пропустить

Сложная
Вы едете на встречу, и путь состоит из нескольких отрезков: длина i-го отрезка — legs[i] километров. Едете вы с постоянной скоростью speed км/ч и стартуете в момент 0. После каждого отрезка, кроме последнего, положен перерыв: вы ждёте до ближайшего целого часа и только тогда едете дальше. Если отрезок закончился ровно в целый час, ждать не нужно. Например, если вы закончили отрезок в момент 2,3 часа, следующий начнёте в 3:00. Некоторые перерывы можно пропустить и сразу ехать дальше. Встреча начинается через deadline часов. Верните наименьшее число пропущенных перерывов, при котором вы приедете не позже этого момента, или -1, если успеть невозможно.
Пример 1
legs=[3, 3, 6], speed=4, deadline=3 → 2

Каждый отрезок пути в 3 км занимает 0,75 часа. Без пропусков: первый отрезок закончится в 0,75, ждём до 1:00, второй — до 1,75, ждём до 2:00, третий (1,5 часа) закончится в 3,5 — поздно. Если пропустить первый перерыв, второй отрезок закончится ровно в 1,5, ждём до 2:00, и последний отрезок завершится в 3,5 — снова поздно. Пропустив оба перерыва, приедем через 0,75 + 0,75 + 1,5 = 3 часа. Ответ 2.

Пример 2
legs=[5, 5], speed=5, deadline=2 → 0

Каждый отрезок занимает ровно час, ждать не приходится — приезжаем вовремя без пропусков.

Пример 3
legs=[4, 4, 4], speed=2, deadline=5 → -1

Даже без перерывов дорога займёт 6 часов, поэтому успеть нельзя.

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

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