Ctrl K

Как далеко уехал ровер

Средняя
Ровер стоит в точке (0, 0) бесконечной клетчатой равнины и смотрит на север (направление +Y; восток — +X). Он выполняет команды из массива commands по очереди: - -2 — повернуть налево на 90°; - -1 — повернуть направо на 90°; - число k от 1 до 9 — проехать вперёд k клеток, по одной. В некоторых клетках лежат камни, их координаты — в массиве rocks. Если следующая клетка занята камнем, ровер остаётся на месте и переходит к следующей команде. Камень может лежать и в точке (0, 0): старту он не мешает, но вернуться туда ровер уже не сможет. Верните наибольший квадрат расстояния от начала координат (x² + y²), на котором ровер побывал за всё время.
Пример 1
commands=[3, -2, 2, -2, 5], rocks=[[-2, 0]] → 13

Ровер едет на север до (0, 3), поворачивает налево и едет на запад до (-2, 3), затем снова налево и на юг: (-2, 2), (-2, 1) — следующая клетка (-2, 0) занята камнем, ровер останавливается. Дальше всех он был в (-2, 3): 4 + 9 = 13.

Пример 2
commands=[2, -1, -1, 4], rocks=[[0, 0]] → 4

Камень в начале координат не мешает стартовать. Ровер поднимается до (0, 2), разворачивается и едет на юг, но останавливается на (0, 1) перед камнем. Ответ 4.

Пример 3
commands=[-1, 1, -1, 1], rocks=[] → 2
Ограничения
  • 1 ≤ len(commands) ≤ 10⁴
  • commands[i] — это -2, -1 или целое от 1 до 9
  • 0 ≤ len(rocks) ≤ 10⁴
  • -3·10⁴ ≤ координаты камней ≤ 3·10⁴
  • Ответ меньше 2³¹
Встречал эту задачу на настоящем собесе?
Решили0
Пробовали0
Отправок0
Принято—
Темы
Похожие задачиПоследний шаг с серией нужной длины СредняяРаскопанные находки СредняяЦепочка замен СредняяСтрока равна столбцу СредняяЗадания по порядку с отдыхом Средняя
загружаем Python…
Вход
commands=[3, -2, 2, -2, 5], rocks=[[-2, 0]]
Ожидается
13

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