Загрузка данных
C. Восстановление маршрута по журналу пакетов
Не решена
Ограничение времени 3 секунды
Ограничение памяти 256 Мб
Ввод стандартный ввод или input.txt
Вывод стандартный вывод или output.txt
Команды управления космическим ровером BRover-E5 передаются пакетами. Каждый логический пакет имеет порядковый номер.
Из-за особенностей сети записи пакетов могут попасть в журнал не по порядку, а одна и та же запись может встретиться несколько раз. Все записи с одинаковым номером содержат одинаковую команду.
Контроллер выполняет каждый логический пакет ровно один раз в порядке возрастания его номера.
Ровер движется по прямоугольному клеточному полю. Символ . обозначает свободную клетку, символ # — препятствие.
Используются следующие команды:
F — перейти на одну клетку вперёд;
B — перейти на одну клетку назад, не меняя ориентацию;
L — повернуться на 90° против часовой стрелки, не перемещаясь в другую клетку;
R — повернуться на 90° по часовой стрелке, не перемещаясь в другую клетку.
Положение ровера задаётся координатами
x
x и
y
y. Начало координат
(
0
,
0
)
(0,0) находится в левом нижнем углу поля. Координата
x
x увеличивается вправо, координата
y
y — вверх.
Ориентация
θ
θ задаётся в градусах:
0
∘
0
∘
— вправо;
9
0
∘
90
∘
— вверх;
18
0
∘
180
∘
— влево;
27
0
∘
270
∘
— вниз.
Если при выполнении команды F или B целевая клетка находится за границей поля либо занята препятствием, ровер остаётся на месте. Такая команда считается заблокированной.
Определите конечные координаты и ориентацию ровера, а также количество заблокированных команд движения.
Формат ввода
В первой строке даны два целых числа rows и columns — количество строк и столбцов поля.
В следующих rows строках записана карта поля. Строки карты перечислены сверху вниз.
Затем в отдельной строке даны начальные координаты
x
x и
y
y и ориентация
θ
θ. Ориентация равна одному из значений 0, 90, 180 или 270.
Далее дано целое число
N
N — количество записей журнала.
В следующих
N
N строках находятся записи вида:
s command
Здесь:
s
s — номер пакета;
command — одна из команд F, B, L или R.
Ограничения:
1
≤
r
o
w
s
,
c
o
l
u
m
n
s
≤
200
1≤rows,columns≤200
0
≤
x
<
c
o
l
u
m
n
s
0≤x<columns
0
≤
y
<
r
o
w
s
0≤y<rows
1
≤
N
≤
200
000
1≤N≤200000
1
≤
s
≤
1
000
000
000
1≤s≤1000000000
Начальная клетка всегда свободна. Записи с одинаковым номером всегда содержат одинаковую команду.
Формат вывода
Выведите четыре целых числа через пробел:
x y theta blocked
Здесь:
x, y — конечные координаты ровера;
theta — конечная ориентация в градусах;
blocked — количество заблокированных команд движения.
Система оценивания
Задача оценивается в 20 баллов.
Разрешено не более 5 попыток.
Решение считается правильным, если оно прошло все тесты.
За каждую учитываемую системой попытку с вердиктом Wrong Answer из максимального балла вычитается 2 балла. Попытки с другими вердиктами балльным штрафом не облагаются.
После правильного ответа задача может отображаться как «Частичное решение», если итоговый балл уменьшен из-за штрафов за предыдущие неверные ответы.
Если правильное решение не принято, участник получает 0 баллов.
Пример
Ввод
Вывод
4 5
.....
..#..
.....
.#...
1 1 90
8
30 F
10 R
20 F
20 F
50 B
40 L
70 F
60 R
4 0 0 0
Примечания
Пример №1. Уникальные пакеты выполняются в порядке 10:R, 20:F, 30:F, 40:L, 50:B, 60:R, 70:F. Запись пакета 20 обрабатывается только один раз.
Ответ
Язык
Python 3.13.2