Войти Регистрация
Алгоритмы

164. Время в пути через светофоры

Лёгкая

Улица длиной length метров. Машина стартует из точки 0 в момент 0 и едет со скоростью 1 метр в секунду.

lights[i] = [p, g, r]: светофор в точке p (по возрастанию p, 0 < p < length). С момента 0 он горит зелёным g секунд, потом красным r секунд, и так по кругу. Если машина подъехала, когда горит красный, она ждёт ближайшего зелёного. В момент переключения на красный проехать уже нельзя, в момент переключения на зелёный — можно.

Верните момент, когда машина доедет до точки length.

В работе: Прогноз времени в пути в Яндекс Картах на участке с известными циклами светофоров.

Пример 1

Ввод
length = 100
lights = [[30, 20, 40], [70, 10, 10]]
Вывод
130

В 30 горит красный до 60, ждём. В 70 машина в момент 100: 100 mod 20 = 0, зелёный. Итог 130.

Пример 2

Ввод
length = 10
lights = []
Вывод
10

Светофоров нет — 10 секунд.

Ограничения

  • 1 ≤ length ≤ 10⁹
  • 0 ≤ длина lights ≤ 10⁵
  • 1 ≤ g, r ≤ 1000
  • Лимит — 2 с на тест (1500 мс).
Как вызывается ваш код Читать ввод и печатать ответ не нужно: мы вызываем функцию на каждом тесте и сравниваем то, что она вернула. print() и console.log() уходят в консоль.
def arrival_time(length, lights):
СимуляцияАрифметикацельO(n)

Источник: наша задача на данных Яндекса. Условие пересказано своими словами.