10828. Пішаки


Відправити розв'язок

Бали: 100
Time limit: 1.0s
Memory limit: 500M

Authors:
Problem type
Allowed languages
C++, Java, Pascal, Python

У першому класі Гліб захоплювався шахами. До того моменту він знав тільки як ходить пішак: він може бити по діагоналі вліво-вгору і вправо-вгору, і ходити на клітину вгору тільки якщо та клітина не зайнята іншою фігурою. Про те, що пішак може перетворюватися на ферзя, Гліб не підозрює. Тому він вигадав свій варіант шахів.

Гра йде на дошці з \(N\) рядками та \(M\) стовпцями (\(1 ≤ N ≤ 100\), \(1 ≤ M ≤ 100\)) за такими правилами. У нижньому рядку, що має номер 1, стоять \(P\) білих пішаків, білих фігур на дошці більше немає. На решті дошки стоять різні чорні фігури (їх назви Гліб не знає). Ходять лише білі, їхня мета — побити всі чорні фігури.

Як і справжніх шахах, якщо пішак Гліба б'є чорну фігуру, вона стає на її місце, а побита фігура забирається з дошки. Вважається, що Гліб виграв, якщо він зумів побити білими пішаками всі чорні фігури, інакше він програв.

Допоможіть йому за заданою конфігурацією всіх фігур визначити, чи зможе він виграти, і, у разі успіху, виведіть правильну послідовність ходів білих пішаків.

Формат вхідних даних

Спочатку вводяться чотири цілих числа \(N, M, P, K\) (\(1 ≤ N ≤ 100\), \(1 ≤ M ≤ 100\), \(0 ≤ P ≤ M\), \(1 ≤ K ≤ N\)).

Далі записано \(P\) різних чисел - номери стовпців \(p_j\) (\(1 ≤ p_j ≤ M\)), у яких стоять білі пішаки.

Далі йдуть \(K\) різних пар цілих чисел - координати (рядки та стовпці) чорних фігур \(r_i, c_i\) (\(2 ≤ r_i ≤ N\), \(1 ≤ c_i ≤ M\)).

Формат вихідних даних

Якщо пішаки не зможуть збити всі фігури, виведіть єдине слово NO. В іншому випадку в перший рядок виведіть YES, другий рядок повинен містити сумарну кількість переміщень \(C\), наступні \(C\) рядків - опис ходів пішаків, по одному ходу на кожен рядок. Кожен хід задається двома координатами \(r\), \(c\) пішака (номерами рядка і стовпця), який ходитиме, і символом \(m\), що приймає три значення: \(L, R, F\) - побити вперед і вліво, побити вперед і вправо, зробити крок уперед відповідно. Дані про перебіг слід виводити розділеними одним пропуском, спочатку координати, потім тип ходу. Якщо послідовностей ходів кілька, виведіть будь-який із них. Зауважте, що мінімізувати кількість переміщень не потрібно.

Приклад вхідних даних

2 2 2 1
1 2
2 2

Приклад вихідних даних

YES
1
1 1 R

Приклад вхідних даних

3 3 2 2
1 3
3 1
3 3

Приклад вихідних даних

NO

Коментарі

Ще немає коментарів.