printРабочее место участника

printЗадачи

865. Робот

Ограничения: время – 1s/2s, память – 64MiB Ввод: input.txt или стандартный ввод Вывод: output.txt или стандартный вывод copy
Послать решение Blockly Посылки Темы Где Обсудить (0)

Для перемещения ящиков на складе используется программируемый робот. Склад представляет собой клеточное поле размером `N`x`M`. На некоторых клетках поля стоят ящики. При движении вперед робот может толкать впереди стоящий ящик, если движению не мешает другой ящик или граница поля. Робот не может выехать со склада. Для управления роботом можно использовать 4 команды: 'N' (север), 'E' (восток), 'S' (юг) и 'W' (запад), заставляющие робота двигаться на одну клетку вперед в указанном направлении. Если движению мешают границы поля или ящики, которые нельзя сдвинуть, то эта команда игнорируется.
Перед реальным выполнением заданной программы роботом, необходима ее проверка на корректность. Напишите программу, определяющую по начальной ситуации и программе для робота конечную ситуацию.
Первая строка ввода содержит два целых числа `N` и `M` (`1\ ≤\ N,\ M\ ≤\ 10`), разделенных пробелом – размеры склада. Далее следует `N` строк, содержащих по `M` символов – начальное состояние склада. Символ '.' означает пустую клетку, символ '#' – клетку с ящиком, символ 'R' – начальную позицию робота (этот символ будет единственным на поле). Далее следует строка, содержащая от 1 до 100 символов 'N','E', 'S' и 'W' – программа, которую робот должен выполнить.
Вывести `N` строк, содержащих по `M` символов – конечное состояние склада после выполнения программы, используя указанные выше обозначения.

Пример ввода

4 5
..#..
.##..
.R.#.
#....
ENSEEENW

Пример вывода

..#..
.##..
..#R.
#....
loading