Вдоль трассы стоят n вышек МТС по порядку. Вышка i может передать сигнал любой из следующих reach[i] вышек (с номерами от i + 1 до i + reach[i]); reach[i] = 0 — вышка только принимает.
Верните наименьшее число передач, чтобы сигнал от вышки 0 дошёл до вышки n − 1. Если дойти нельзя, верните −1. Для одной вышки ответ 0.
В работе: Резервный канал на трассе М‑4: при отказе магистрали связь идёт по радиорелейным пролётам, каждая передача добавляет задержку, и инженер выбирает маршрут с наименьшим числом пролётов.
Пример 1
Ввод
reach = [2, 3, 1, 1, 4]
Вывод
2
0 → 1 → 4: две передачи.
Пример 2
Ввод
reach = [3, 2, 1, 0, 4]
Вывод
-1
Все пути упираются в вышку 3.
Ограничения
- 1 ≤ n ≤ 2·10⁵
- 0 ≤
reach[i]≤ 10⁵ - Лимит — 2 с на тест (1500 мс).
Как вызывается ваш код
Читать ввод и печатать ответ не нужно: мы вызываем функцию на каждом тесте и сравниваем то, что она вернула.
print() и console.log() уходят в консоль.
def min_relays(reach):
Источник: наша задача на данных МТС. Условие пересказано своими словами.
Давали на собеседовании?
Стр. 1Ctrl+Enter — запуск · Ctrl+Shift+Enter — отправка
Ожидаемый ответ не нужен: покажем, что вернула функция.
Здесь появится результат отправки.