Ctrl K

Самый длинный спуск прыжками

Сложная
В ряд стоят площадки, высота площадки i равна heights[i]. С площадки i можно прыгнуть на площадку j, если одновременно: - j не дальше reach позиций: 0 < |i - j| ≤ reach, и j внутри ряда; - heights[j] < heights[i] — прыгать можно только вниз; - все площадки строго между i и j тоже ниже heights[i] — иначе они загораживают прыжок. Вы выбираете любую стартовую площадку и прыгаете сколько угодно раз. Верните наибольшее число площадок, которые можно посетить за один маршрут (стартовая тоже считается).
Пример 1
heights=[5, 1, 3, 2, 7, 4], reach=2 → 3

Старт с 4 (высота 7): 4 → 2 (высота 3, между ними только 2 < 7) → 3 (высота 2). Ещё вариант длиной 3: 4 → 2 → 1. Больше трёх площадок не выйти.

Пример 2
heights=[2, 2, 2], reach=2 → 1

Прыгать можно только строго вниз, а все площадки одной высоты, поэтому посещается одна площадка.

Пример 3
heights=[1, 2, 3, 4], reach=1 → 4
Ограничения
  • 1 ≤ len(heights) ≤ 1000
  • 1 ≤ heights[i] ≤ 10⁵
  • 1 ≤ reach ≤ len(heights)
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиКоробка в коробке СложнаяСтрогий подъём из запасных чисел СложнаяСамый выгодный набор подработок СложнаяНаибольшее число, кратное трём СложнаяЛучший порядок дегустационного сета Сложная
загружаем Python…
Вход
heights=[5, 1, 3, 2, 7, 4], reach=2
Ожидается
3

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