QOJ.ac

QOJ

Limite de temps : 2 s Limite de mémoire : 1024 MB Points totaux : 100 Hackable ✓

#18669. 復原二元搜尋樹

Statistiques

燦率建立了一棵二元搜尋樹,樹上有 $N$ 個節點,每個節點上都標有一個整數。二元搜尋樹是一棵二元樹,滿足對於每個節點 $i$,$i$ 的左子孫節點上的數值都小於 $i$ 上的數值,而 $i$ 的右子孫節點上的數值都大於 $i$ 上的數值。

燦率記錄了所有 $i$ 的資料:二元搜尋樹中第 $i$ 個節點的深度 $H_i$,以及第 $i$ 個節點上的整數 $A_i$。這裡 $A_i$ 兩兩相異,且根節點的深度為 $1$。($1 \le i \le N$)

燦率在參加 ICPC World Finals 期間弄丟了這棵二元搜尋樹。請利用先前記錄的資訊,為燦率重建這棵二元搜尋樹。

輸入格式

第一行給定節點個數 $N$。($1 \leq N \leq 200\,000$)

接下來 $N$ 行,每行給定一個節點的資訊。對於所有 $1 \leq i \leq N$,第 $(i+1)$ 行包含第 $i$ 個節點上的整數 $A_i$ 以及第 $i$ 個節點的深度 $H_i$,以空格分隔。($-2\cdot 10^9\leq A_i \leq 2\cdot 10^9$;$1 \leq H_i \leq N$) 所有 $A_i$ 兩兩相異。

輸出格式

若無法根據給定記錄重建二元搜尋樹,則輸出 $-1$。

若可以重建,則輸出 $N$ 行,表示樹的結構。

第 $i$ 行輸出第 $i$ 個節點的左子節點與右子節點的節點編號。若沒有子節點,則輸出 $-1$ 作為子節點編號。

若存在多種可能的樹,輸出任意一種即可。

範例

輸入 1

3
1 2
2 1
3 2

輸出 1

-1 -1
1 3
-1 -1

輸入 2

3
1 1
2 2
3 2

輸出 2

-1

輸入 3

3
2 2
5 3
4 2

輸出 3

-1

輸入 4

3
100 2
200 1
300 2

輸出 4

-1 -1
1 3
-1 -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.