Ctrl K

Заправки по пути

Сложная
Машина едет по прямой дороге к точке на отметке distance километров от старта. В баке изначально fuel литров, бак бездонный, на каждый километр уходит ровно литр. Вдоль дороги стоят колонки: stations[i] = [pos, amount] — колонка на отметке pos, где можно забрать сразу все amount литров. Колонки перечислены по возрастанию отметки. Верните наименьшее число остановок на заправку, чтобы доехать до цели, или -1, если доехать нельзя. Доехать до колонки или до цели с пустым баком — допустимо.
Пример 1
distance=50, fuel=15, stations=[[10, 20], [15, 5], [30, 40]] → 2

До колонки на отметке 30 без остановки не доехать — заправляемся на отметке 10 (+20 л). На отметке 30 берём ещё 40 л и спокойно доезжаем до 50. Одной остановки мало: ни одна колонка, кроме последней, не даёт достаточно топлива, а до последней на старом запасе не добраться.

Пример 2
distance=20, fuel=5, stations=[[8, 100]] → -1

Пяти литров не хватает даже до первой колонки.

Пример 3
distance=10, fuel=10, stations=[[3, 1]] → 0
Ограничения
  • 1 ≤ distance, fuel ≤ 10⁹
  • 0 ≤ len(stations) ≤ 500
  • 0 < stations[0][0] < stations[1][0] < … < distance
  • 1 ≤ amount ≤ 10⁹
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиКруглый торт и два соседа СложнаяСамый тяжёлый день чтения СложнаяНаращиваем капитал проектами СложнаяБольше заказов к сроку СложнаяСамый узкий отрезок для всех списков Сложная
загружаем Python…
Вход
distance=50, fuel=15, stations=[[10, 20], [15, 5], [30, 40]]
Ожидается
2

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