Universal Cup Judging System

Universal Cup

Time Limit: 2 s Memory Limit: 1024 MB
Statistics

К этой задаче прикреплён файл. Вы можете использовать его для симуляции и визуализации движений робота.

problem_23603_b923d7f472cb2d50f053c89f0e9688e6.png

У VegiCat есть робот на бесконечной двумерной сетке. Он хочет переместить его из клетки $s = (s_x, s_y)$ в клетку $t = (t_x, t_y)$. Каждая клетка имеет целочисленные координаты. Клетки $s$ и $t$ могут совпадать.

Робот следует строке инструкций $p$. Каждый символ — это L, R, U или D. Обозначим через $|p|$ длину строки $p$.

Робот начинает движение в клетке $s$. До того как он выполнит какие-либо инструкции, вы можете разместить не более $|p|$ препятствий в различных клетках. Координаты $(x, y)$ каждого препятствия должны удовлетворять условию $-2 \cdot 10^9 \le x, y \le 2 \cdot 10^9$. Ни клетка $s$, ни клетка $t$ не могут содержать препятствие. Каждое препятствие занимает одну клетку и остаётся неподвижным на протяжении всего процесса; все остальные клетки свободны от препятствий.

Робот выполняет инструкции $p_1, p_2, \ldots, p_{|p|}$ по порядку. Для каждой инструкции, начиная со своей текущей клетки $(x, y)$, он движется вдоль следующей последовательности клеток:

  • L: $(x, y) \to (x - 1, y) \to (x - 2, y) \to \cdots$;
  • R: $(x, y) \to (x + 1, y) \to (x + 2, y) \to \cdots$;
  • U: $(x, y) \to (x, y + 1) \to (x, y + 2) \to \cdots$;
  • D: $(x, y) \to (x, y - 1) \to (x, y - 2) \to \cdots$.

Робот раз за разом делает один шаг в указанном направлении, пока следующая клетка не содержит препятствия. Он останавливается в клетке непосредственно перед первым препятствием в этом направлении. Если следующая клетка в указанном направлении уже содержит препятствие до начала выполнения инструкции, робот остаётся на месте, но инструкция всё равно считается выполненной. Если впереди в этом направлении нет ни одного препятствия, робот будет двигаться вечно, и такое размещение препятствий является некорректным.

Робот может достичь клетки $t$ до того, как будут выполнены все инструкции. Он всё равно обязан выполнить все оставшиеся инструкции. Постройте любое размещение препятствий, удовлетворяющее приведённым выше требованиям, при котором робот окажется в клетке $t$ после последней инструкции, либо сообщите, что такого размещения не существует.

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

Первая строка содержит целое число $T$ ($1 \le T \le 10^5$) — количество наборов входных данных. Далее следует описание наборов входных данных.

Первая строка каждого набора входных данных содержит два целых числа $s_x$ и $s_y$ ($-10^9 \le s_x, s_y \le 10^9$) — координаты начальной клетки.

Вторая строка содержит два целых числа $t_x$ и $t_y$ ($-10^9 \le t_x, t_y \le 10^9$) — координаты целевой клетки.

Третья строка содержит строку инструкций $p$ ($1 \le |p| \le 10^5$), состоящую только из символов L, R, U и D.

Гарантируется, что сумма $|p|$ по всем наборам входных данных не превосходит $10^5$.

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

Для каждого набора входных данных выведите ответ в порядке следования во входных данных. Размещения препятствий для разных наборов входных данных независимы.

Если корректного размещения не существует, выведите NO в отдельной строке.

В противном случае выведите YES в первой строке. Во второй строке выведите целое число $k$ ($0 \le k \le |p|$) — количество препятствий.

Затем выведите $k$ строк. $i$-я из этих строк должна содержать два целых числа $x_i$ и $y_i$ ($-2 \cdot 10^9 \le x_i, y_i \le 2 \cdot 10^9$), задающих препятствие в клетке $(x_i, y_i)$.

Все $k$ пар координат должны быть различны, и ни одна из них не может совпадать с $s$ или $t$. Размещение должно позволять каждой инструкции завершиться и оставлять робота в клетке $t$ после последней инструкции. Если существует несколько решений, выведите любое из них.

Вы можете выводить вердикт yes или no в любом регистре. Например, yEs, yes, Yes и YES будут приняты как положительный ответ.

Примеры

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

6
0 0
1 0
RL
0 0
-1 0
URD
0 0
8 0
RLR
0 0
0 0
UDUD
0 0
2 5
RDULR
0 0
1 1
RURURU

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

NO
NO
YES
2
-1 0
9 0
YES
2
0 -1
0 1
YES
5
-1 5
2 -1
2 6
3 0
3 5
YES
3
1 2
2 0
2 1

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.