Мы собираемся построить новый город Метрополис. Город будет построен на бесконечной квадратной таблице. В итоге в городе будет $$$n$$$ небоскребов, каждый в своей клетке таблицы. В любой момент строительства все клетки, в которых еще нет небоскребов, называются пустыми.
Вам даны запланированные координаты $$$n$$$ небоскребов. Ваша задача — найти порядок, в котором их нужно строить, удовлетворив следующие условия.
Если решение существует, обозначим порядок, в котором небоскребы должны быть построены, как $$$s_1, \dots, s_n$$$. Есть два типа подзадач:
Тип 1: можно найти любое решение.
Тип 2: нужно найти решение, максимизирующее $$$s_n$$$. Среди всех таких решение, максимизирующее $$$s_{n-1}$$$, и так далее. Другими словами, нужно найти корректный порядок стройки, для которого последовательность $$$(s_n,s_{n-1},\dots,s_1)$$$ лексикографически максимальна.
Первая строка содержит одно целое число $$$n$$$ ($$$1 \le n \le 150,000$$$) — количество небоскребов.
Вторая строка содержит одно целое число $$$t$$$ ($$$1 \le t \le 2$$$), описывающее тип подзадачи, как объяснено выше.
Далее следуют $$$n$$$ строк. $$$i$$$-я из этих строк содержит два целых числа $$$r_i$$$ и $$$c_i$$$ ($$$|r_i|, |c_i| \le 10^9$$$), обозначающие координату клетки, где должен быть построен $$$i$$$-й небоскреб.
(Небоскребы не пронумерованы ни в каком специальном порядке. Единственная причина присвоить им номера — эти номера используются при выводе.)
Гарантируется, что никакие два небоскреба не совпадают.
Если невозможно построить небоскребы согласно заданным правилам, выведите «NO».
Иначе выведите $$$n+1$$$ строку. Первая из этих строк должна содержать строку «YES». Далее для каждого $$$i$$$ $$$i$$$-я из оставшихся $$$n$$$ строк должна содержать единственное число $$$s_i$$$.
В подзадаче с $$$t = 1$$$, если существуют несколько решений, вы можете вывести любое.
Подзадача 1 (8 баллов): $$$t = 1$$$ и $$$n \le 10$$$
Подзадача 2 (14 баллов): $$$t = 1$$$ и $$$n \le 200$$$
Подзадача 3 (12 баллов): $$$t = 1$$$ и $$$n \le 2,000$$$
Подзадача 4 (17 баллов): $$$t = 2$$$ и $$$n \le 2,000$$$
Подзадача 5 (20 баллов): $$$t = 1$$$
Подзадача 6 (10 баллов): $$$t = 2$$$, $$$n \le 70,000$$$ и $$$|r_i|, |c_i| \le 900$$$ для всех $$$i$$$
Подзадача 7 (19 баллов): $$$t = 2$$$
3 2 0 0 0 1 0 2
YES 1 2 3
3 1 0 0 1 1 2 2
YES 2 3 1
2 1 0 0 0 2
NO
В первом примере есть три небоскреба в одном ряду. Все из них могут быть доступны снаружи Метрополиса, существуют четыре порядка, которые сохраняют связность:
Так как $$$t = 2$$$, мы обязаны выбрать первый вариант.
Во втором примере единственная разница с первым примером — то, что небоскреб 2 имеет только общие углы с небоскребами 1 и 3. Все те же варианты порядков корректны. Так как $$$t = 1$$$, любой из этих ответов корректен.
В третьем примере Метрополис не связен, поэтому его точно нельзя построить.
Название |
---|