Universal Cup Judging System

Universal Cup

実行時間制限: 2 s メモリ制限: 1024 MB
統計

До цієї задачі додано вкладення. Ви можете використати його для симуляції та візуалізації рухів робота.

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.