Codeforces Round 615 (Div. 3) |
---|
Закончено |
На складе есть робот и $$$n$$$ посылок, которые он хочет собрать. Склад можно представить в виде координатной сетки. Изначально робот находится в точке $$$(0, 0)$$$. $$$i$$$-я посылка находится в точке $$$(x_i, y_i)$$$. Гарантируется, что в одной точке не могут находиться две посылки. Также гарантируется, что в точке $$$(0, 0)$$$ посылки нет.
Робот наполовину сломан и может передвигаться только вверх ('U') и вправо ('R'). Другими словами, за один шаг робот может переместиться из точки $$$(x, y)$$$ в точку ($$$x + 1, y$$$) или в точку $$$(x, y + 1)$$$. Как сказано выше, робот хочет собрать все $$$n$$$ посылок (в любом порядке). Он хочет сделать это за минимально возможное число шагов. Если существует несколько подходящих последовательностей шагов, робот хочет выбрать лексикографически минимальный путь.
Строка $$$s$$$ длины $$$n$$$ лексикографически меньше, чем строка $$$t$$$ длины $$$n$$$ если существует такой индекс $$$1 \le j \le n$$$, что для всех $$$i$$$ от $$$1$$$ до $$$j-1$$$ $$$s_i = t_i$$$ и $$$s_j < t_j$$$. Это обычное сравнение строк, например, в словаре строки расположены в лексикографическом порядке. Большинство языков программирования сравнивают строки именно так.
Первая строка входных данных содержит одно целое число $$$t$$$ ($$$1 \le t \le 100$$$) — количество наборов входных данных.
Первая строка каждого набора входных данных содержит одно целое число $$$n$$$ ($$$1 \le n \le 1000$$$) — количество посылок на складе.
Следующие $$$n$$$ строк содержат описания посылок. $$$i$$$-я посылка задана в виде двух целых чисел $$$x_i$$$ и $$$y_i$$$ ($$$0 \le x_i, y_i \le 1000$$$) — $$$x$$$-координаты посылки и $$$y$$$-координаты посылки.
Гарантируется, что в каждой точке находится не более одной посылки. Также гарантируется, что в точке $$$(0, 0)$$$ посылки нет.
Сумма $$$n$$$ по всем наборам входных данных в тесте не превосходит $$$1000$$$.
Для каждого набора входных данных выведите ответ.
Если невозможно собрать все $$$n$$$ посылок в каком-либо порядке, стартуя из точки ($$$0,0$$$), выведите «NO» первой строкой.
Иначе выведите «YES» первой строкой. Затем выведите кратчайший путь (строку), состоящий из символов 'R' и 'U'. Среди всех таких путей нужно выбрать лексикографически минимальный.
Заметьте, что в этой задаче «YES» и «NO» могут быть выведены только в верхнем регистре, то есть «Yes», «no» и «YeS» не принимаются.
3 5 1 3 1 2 3 3 5 5 4 3 2 1 0 0 1 1 4 3
YES RUUURRRRUU NO YES RRRRUUU
Для первого набора данных из указанного примера оптимальный путь RUUURRRRUU выглядит следующим образом:
Название |
---|