Программист Стас на время отпуска устроился поработать в японскую компьютерную фирму Thinking Rabbit.
Сначала идея казалась замечательной — и на халяву съездить за границу, и заработать, и набраться опыта у японских коллег.
Но оказалось, что программисты без знания японского фирме не нужны, и Стаса отправили работать кем-то вроде кладовщика
(по-японски его профессию называли Soko-ban).
Стас должен наводить порядок на складе, точнее, расставлять контейнеры с грузом по местам. Каждое утро Стасу
дают бумажку со схемой очередного помещения и указанием, куда надо поставить контейнеры (почему-то начальству фирмы
Thinking Rabbit не важно, какой именно контейнер куда поставить, главное, чтобы все контейнеры стояли только
на отмеченных местах).
Однако, расставить их не так просто. Контейнеры большие и тяжелые, так что передвигать их можно, только толкая по
полу, причем сил хватает лишь на один контейнер за раз. Кстати, контейнеры еще и гладкие, поэтому их
можно толкать перед собой, но невозможно, например, тянуть за собой или поворачивать. Габариты помещения точно
подогнаны под размеры контейнеров, поэтому Стас не может перебраться через контейнер, протиснуться между стоящими
рядом контейнерами или пролезть между контейнером и стеной — он может ходить только по свободному пространству.
Поэтому наведение порядка превращается в жуткую головоломку. А если решить её не удается или контейнер случайно
попадает в какой-нибудь угол, из которого его не вытащить, то Стасу не позавидуешь. Дело в том, что стены склада
сплошные, без выходов. Утром Стас попадает на склад через один из люков в потолке, а выйти из помещения он
может только тогда, когда выполнит свою задачу. Умная система управления откроет люк для Стаса в нужном месте.
Помогите Стасу составить план перемещения контейнеров.
Исходные данные
На входе задана схема склада — прямоугольная сетка размером
n ×
m
(3 ≤ n, m ≤ 8).
Пустое место обозначется пробелом, а объекты обозначаются следующими символами:
#
— стены
.
— пустое место, куда нужно поставить контейнер (цель)
@
— место, откуда начинает работу Стас
+
— место, откуда начинает работу Стас, если там находится одна из целей
$
— контейнер на пустом месте
*
— контейнер на одной из целей
Гарантируется, что схема склада задана корректно, т.е. Стас не может выйти за его
пределы. Количество контейнеров совпадает с количеством целей.
Результат
Выведите строку, описывающую план перемещений Стаса,
при котором он расставляет контейнеры по
конечным позициям. Все перемещения записываются буквами r, l, u и d
(соответствующие четырем направлениям перемещений).
Если при перемещении двигается контейнер, то буквы записываются в верхнем регистре
(R, L, U и D
соответственно). Длина строки не должна превышать 10000 символов.
Можете считать, что решение всегда существует.
Примеры
исходные данные | результат |
---|
########
#@ $ .#
########
| rrRR
|
######
## .#
#@ ###
# * #
# $ #
# #
#######
| dddrrrruLdlUUUluRR
|
Автор задачи: Станислав Васильев и Сергей Пупырев
Источник задачи: ACM ICPC 2007–2008. NEERC. Восточный подрегион. Екатеринбург, 27 октября 2007 г.