Universal Cup Judging System

Universal Cup

Limite de temps : 2 s Limite de mémoire : 1024 MB
Statistiques

Do tego zadania dołączony jest załącznik. Możesz go użyć do symulacji i wizualizacji ruchów robota.

problem_23603_b923d7f472cb2d50f053c89f0e9688e6.png

VegiCat ma robota na nieskończonej dwuwymiarowej siatce. Chce, aby przemieścił się on z pola $s = (s_x, s_y)$ na pole $t = (t_x, t_y)$. Każde pole ma całkowite współrzędne. Pola $s$ oraz $t$ mogą być takie same.

Robot wykonuje ciąg instrukcji opisany napisem $p$. Każdy znak to L, R, U lub D. Niech $|p|$ oznacza długość napisu $p$.

Robot zaczyna na polu $s$. Zanim wykona jakąkolwiek instrukcję, możesz umieścić co najwyżej $|p|$ przeszkód na różnych polach. Współrzędne $(x, y)$ każdej przeszkody muszą spełniać warunek $-2 \cdot 10^9 \le x, y \le 2 \cdot 10^9$. Ani na polu $s$, ani na polu $t$ nie może znajdować się przeszkoda. Każda przeszkoda zajmuje jedno pole i pozostaje nieruchoma przez cały proces; wszystkie pozostałe pola są wolne od przeszkód.

Robot wykonuje instrukcje $p_1, p_2, \ldots, p_{|p|}$ po kolei. Dla każdej instrukcji, zaczynając z bieżącego pola $(x, y)$, porusza się wzdłuż następującego ciągu pól:

  • 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$.

Robot wielokrotnie wykonuje jeden krok we wskazanym kierunku, dopóki następne pole nie zawiera przeszkody. Zatrzymuje się na polu bezpośrednio przed pierwszą przeszkodą w tym kierunku. Jeśli następne pole we wskazanym kierunku zawiera już przeszkodę przed rozpoczęciem instrukcji, robot pozostaje w miejscu, ale instrukcja i tak zostaje uznana za wykonaną. Jeśli w tym kierunku przed robotem nie ma żadnej przeszkody, robot poruszałby się w nieskończoność, a takie rozmieszczenie jest nieprawidłowe.

Robot może dotrzeć na pole $t$ przed wykonaniem wszystkich instrukcji. Mimo to musi wykonać wszystkie pozostałe instrukcje. Skonstruuj dowolne rozmieszczenie przeszkód spełniające powyższe wymagania, tak aby po ostatniej instrukcji robot zakończył ruch na polu $t$, albo stwierdź, że takie rozmieszczenie nie istnieje.

Wejście

Pierwszy wiersz zawiera liczbę całkowitą $T$ ($1 \le T \le 10^5$), oznaczającą liczbę przypadków testowych. Poniżej znajduje się opis przypadków testowych.

Pierwszy wiersz każdego przypadku testowego zawiera dwie liczby całkowite $s_x$ oraz $s_y$ ($-10^9 \le s_x, s_y \le 10^9$), oznaczające współrzędne pola początkowego.

Drugi wiersz zawiera dwie liczby całkowite $t_x$ oraz $t_y$ ($-10^9 \le t_x, t_y \le 10^9$), oznaczające współrzędne pola docelowego.

Trzeci wiersz zawiera napis instrukcji $p$ ($1 \le |p| \le 10^5$), składający się wyłącznie ze znaków L, R, U oraz D.

Gwarantowane jest, że suma $|p|$ po wszystkich przypadkach testowych nie przekracza $10^5$.

Wyjście

Dla każdego przypadku testowego wypisz odpowiedź w kolejności zgodnej z wejściem. Rozmieszczenia przeszkód dla różnych przypadków testowych są od siebie niezależne.

Jeśli nie istnieje żadne poprawne rozmieszczenie, wypisz NO w osobnym wierszu.

W przeciwnym razie wypisz YES w pierwszym wierszu. W drugim wierszu wypisz liczbę całkowitą $k$ ($0 \le k \le |p|$), oznaczającą liczbę przeszkód.

Następnie wypisz $k$ wierszy. $i$-ty z tych wierszy musi zawierać dwie liczby całkowite $x_i$ oraz $y_i$ ($-2 \cdot 10^9 \le x_i, y_i \le 2 \cdot 10^9$), oznaczające przeszkodę na polu $(x_i, y_i)$.

Wszystkie $k$ par współrzędnych musi być parami różnych i żadna nie może być równa $s$ ani $t$. Rozmieszczenie musi pozwalać na zakończenie każdej instrukcji i pozostawić robota na polu $t$ po ostatniej instrukcji. Jeśli istnieje wiele rozwiązań, wypisz dowolne z nich.

Odpowiedź yes lub no możesz wypisać dowolną wielkością liter. Na przykład yEs, yes, Yes oraz YES są akceptowane jako odpowiedzi twierdzące.

Przykład

Wejście 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

Wyjście 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.