Ctrl K

Залы, открывающиеся по расписанию

Сложная
Музей устроен как прямоугольная сетка залов opens размером m × n. Зал в строке r и столбце c открывается в момент opens[r][c]: войти в него можно только в момент, не меньший этого числа. В момент 0 вы стоите в левом верхнем зале. Каждую секунду вы обязаны перейти в соседний зал — вверх, вниз, влево или вправо; оставаться на месте нельзя. Переход занимает ровно одну секунду. Верните самый ранний момент, когда можно оказаться в правом нижнем зале, или -1, если попасть туда невозможно.
Пример 1
opens=[[0, 1], [3, 2]] → 2

В момент 1 переходим вправо (зал открылся в момент 1), в момент 2 — вниз, в правый нижний зал, который открылся как раз в момент 2.

Пример 2
opens=[[0, 4], [5, 6]] → -1

Оба соседа стартового зала закрыты в момент 1, а стоять на месте нельзя — сдвинуться некуда.

Пример 3
opens=[[0, 1, 1], [9, 9, 6]] → 7

К моменту 2 мы в правом верхнем зале, но зал под ним откроется только в момент 6. Ходим туда-обратно между двумя верхними правыми залами; из-за чётности войти вниз получается только в момент 7.

Ограничения
  • 2 ≤ m, n ≤ 1000
  • 4 ≤ m · n ≤ 10⁵
  • 0 ≤ opens[r][c] ≤ 10⁵
  • opens[0][0] = 0
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиШарик и лунка СложнаяПерекрасить стрелки до выхода СложнаяСквозь стены в дальний угол СложнаяКратчайший путь катящегося шарика СредняяЧерез опасное поле Средняя
загружаем Python…
Вход
opens=[[0, 1], [3, 2]]
Ожидается
2

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