Ctrl K

Самый высокий дом под ограничениями

Сложная
На улице строят houses домов в ряд, они пронумерованы от 1 до houses. Высота каждого дома — целое неотрицательное число этажей, и правила застройки такие: - дом 1 должен иметь высоту 0; - высоты соседних домов отличаются не больше чем на 1; - для некоторых домов задан потолок: пара caps[i] = [p, h] значит, что дом p не выше h. Каждый дом встречается в caps не больше одного раза, дома 1 там нет. Верните наибольшую высоту, которую может получить самый высокий дом улицы.
Пример 1
houses=7, caps=[[3, 0], [6, 4]] → 4

Высоты 0, 1, 0, 1, 2, 3, 4: третий дом нулевой, шестой не выше 4. Самый высокий — седьмой, 4 этажа.

Пример 2
houses=4, caps=[] → 3

Ограничений нет, высоты растут по одному: 0, 1, 2, 3.

Пример 3
houses=9, caps=[[5, 1], [9, 0]] → 2

Например, 0, 1, 2, 1, 1, 2, 2, 1, 0: выше 2 не подняться ни до пятого дома, ни после него.

Ограничения
  • 2 ≤ houses ≤ 10⁹
  • 0 ≤ len(caps) ≤ min(houses - 1, 10⁵)
  • 2 ≤ p ≤ houses, все p различны
  • 0 ≤ h ≤ 10⁹
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиГде встретиться друзьям СложнаяРазброс по всем наборам СложнаяНаибольшее число, кратное трём СложнаяПостаматы вдоль дороги СложнаяПоворотная камера Сложная
загружаем Python…
Вход
houses=7, caps=[[3, 0], [6, 4]]
Ожидается
4

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