QOJ.ac

QOJ

実行時間制限: 1 s メモリ制限: 1024 MB 満点: 100 ハック可能 ✓

#17529. Приготовление пиццы для голодного Муто

統計

Кинесис, исследуя остров Чучу в попытках победить Черного мага, столкнулся с голодным Муто. Симия, которая каждый день кормила Муто, попросила Кинесиса помочь приготовить огромную пиццу для капризничающего Муто. Поскольку огромный Муто преграждает путь к Черному магу, Кинесису пришлось согласиться на просьбу Симии.

Огромная пицца, которую хочет Муто, представляет собой сетку размером $N \times N$. Самая верхняя левая клетка пиццы находится в 1-й строке и 1-м столбце, а самая нижняя правая — в $N$-й строке и $N$-м столбце. В рецепте, который дала Симия, указано расположение фрикаделек, и Кинесис должен выложить их именно так, как нарисовано в рецепте. Изначально на пицце в строке $R$ и столбце $C$ уже лежит одна фрикаделька, выложенная Симией. Форма фрикадельки в точности соответствует клетке сетки, и в одной клетке не может находиться более одной фрикадельки.

Состояние пиццы при $N=5, R=3, C=2$ и позиции вне пиццы, откуда можно использовать телекинез

Так как наступать на пиццу нельзя (она станет непригодной для еды), Кинесис должен использовать телекинез, находясь вне пиццы. Процесс одного использования телекинеза выглядит следующим образом:

  1. Выбирается позиция для использования телекинеза. Возможные позиции: сверху, снизу, слева или справа от пиццы. Телекинез начинается из точки, где находится Кинесис: если он сверху, то направлен в сторону увеличения номера строки; если снизу — в сторону уменьшения номера строки; если слева — в сторону увеличения номера столбца; если справа — в сторону уменьшения номера столбца.
  2. Выбирается номер строки или столбца, на который воздействует телекинез. Телекинез должен быть направлен параллельно строке или столбцу и не может охватывать более одной строки или столбца одновременно.
  3. Применяется телекинез. Существует два вида телекинеза:
    • Толкание (push): фрикаделька сдвигается и помещается в клетку, непосредственно предшествующую первой встреченной фрикадельке. Если в первой клетке по направлению телекинеза уже есть фрикаделька, или если фрикаделек по направлению нет, из-за чего сдвинутая фрикаделька не может остаться на пицце, то сдвинутая фрикаделька исчезает.
    • Вытягивание (pull): первая встреченная по направлению телекинеза фрикаделька убирается с пиццы. Если по направлению телекинеза нет ни одной фрикадельки, ничего не происходит.

Использование телекинеза: толкание (push) и вытягивание (pull)

Если Кинесис выложит фрикадельки в точности по рецепту Симии, Муто с удовольствием съест пиццу и откроет путь к следующей локации. Однако, поскольку неизвестно, когда Черный маг решит уничтожить мир, Кинесис не может тратить время впустую.

Выведите один из способов приготовления пиццы, используя телекинез не более $2N^2$ раз.

Входные данные

В первой строке дано целое число $N$ — размер пиццы ($3 \leq N \leq 50$).

Во второй строке даны два целых числа $R$ и $C$, разделенные пробелом — начальные координаты фрикадельки, выложенной Симией ($1 \leq R, C \leq N$).

Далее следуют $N$ строк, описывающих расположение фрикаделек согласно рецепту Симии. Каждая строка содержит строку длиной $N$. $j$-й символ $i$-й строки означает наличие фрикадельки в $i$-й строке и $j$-м столбце: . означает пустую клетку, # — клетку с фрикаделькой.

Выходные данные

Если пиццу можно приготовить, используя телекинез не более $2N^2$ раз, в первой строке выведите количество использований телекинеза $M$. Заметьте, что $M$ не обязательно должно быть минимальным ($0 \leq M \leq 2N^2$).

Если $M \geq 1$, начиная со второй строки выведите $M$ строк, описывающих действия Кинесиса, по одному на строку. Каждая строка должна содержать позицию использования телекинеза (сверху: U, снизу: D, слева: L, справа: R), номер строки или столбца $X$ ($1 \leq X \leq N$) и тип телекинеза (push для толкания, pull для вытягивания), разделенные пробелами.

Если приготовить пиццу за $2N^2$ или менее использований телекинеза невозможно, выведите в первой строке -1.

Примеры

Входные данные 1

3
2 2
.#.
##.
...

Выходные данные 1

2
U 2 push
L 2 push

Входные данные 2

3
1 2
...
#.#
.#.

Выходные данные 2

6
D 2 push
D 2 push
L 2 push
R 2 push
U 2 pull
U 2 pull

Входные данные 3

4
1 1
....
....
....
....

Выходные данные 3

1
L 1 pull

Discussions

About Discussions

The discussion section is only for posting: General Discussions (problem-solving strategies, alternative approaches), and Off-topic conversations.

This is NOT for reporting issues! If you want to report bugs or errors, please use the Issues section below.

Open Discussions 0
No discussions in this category.

Issues

About Issues

If you find any issues with the problem (statement, scoring, time/memory limits, test cases, etc.), you may submit an issue here. A problem moderator will review your issue.

Guidelines:

  1. This is not a place to publish discussions, editorials, or requests to debug your code. Issues are only visible to you and problem moderators.
  2. Do not submit duplicated issues.
  3. Issues must be filed in English or Chinese only.
Active Issues 0
No issues in this category.
Closed/Resolved Issues 0
No issues in this category.