eolymp
bolt
Спробуйте наш новий інтерфейс для відправки розв'язків
Задачі

Декартове дерево

Декартове дерево

Вам задано пари чисел (\textbf{a_i}, \textbf{b_i}), Вам необхідно побудувати декартове дерево, таке що \textbf{i}-та вершина має ключі (\textbf{a_i}, \textbf{b_i}), вершини з ключом \textbf{a_i} утворюють бінарне дерево пошуку, а вершини з ключем \textbf{b_i} утворюють кучу. \InputFile У першому рядку записано число \textbf{N} - кількість пар. Далі йде \textbf{N} (\textbf{1} ≤ \textbf{N} ≤ \textbf{50000}) пар (\textbf{a_i}, \textbf{b_i}). Для усіх пар |\textbf{a_i}|, |\textbf{b_i}| ≤ \textbf{30000}. \textbf{a_i} ≠ \textbf{a_j} та \textbf{b_i} ≠ \textbf{b_j} для усіх \textbf{i} ≠ \textbf{j}. \OutputFile Якщо декартове дерево з таким набором ключів побудувати можливо, виведіть у першому рядку \textbf{YES}, у протилежному випадку виведіть \textbf{NO}. В випадку відповіді \textbf{YES}, виведіть \textbf{N} рядків, кожен з яких повинен описувати вершину. Опис вершини складається з трьо чисел: номер предка, номер лівого сина та номер правого сина. Якщо у вершини відсутній предок або який-небудь з синів, то виводьте на його місці число \textbf{0}. Якщо дерев, що підходять, декілька, виведіть довільне.
Ліміт часу 2 секунди
Ліміт використання пам'яті 64 MiB
Вхідні дані #1
7
5 4
2 2
3 9
0 5
1 3
6 6
4 11
Вихідні дані #1
YES
2 3 6
0 5 1
1 0 7
5 0 0
2 4 0
1 0 0
3 0 0