Ctrl K

Скорость поездов к дедлайну

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

На скорости 2 первый поезд едет 2 часа, второй — 1 час, третий — 3 часа: ровно 6 часов. На скорости 1 вышло бы 12 часов.

Пример 2
legs=[3, 5], deadline=1.5 → 10

Второй поезд уходит не раньше отметки 1 час, и у него остаётся полчаса на 5 км — нужна скорость 10. Первый поезд на этой скорости успевает за 0.3 часа.

Пример 3
legs=[1, 1, 1], deadline=2.0 → -1

Третий поезд отправится не раньше отметки 2 часа, а к этому моменту надо уже быть на месте. Успеть нельзя.

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

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