5883 - 提高:笛卡尔树:模版题
Time Limit : 1 秒
Memory Limit : 512 MB
给定一个 1 \sim n 的排列 p,构建其笛卡尔树。
即构建一棵二叉树,满足:
- 每个节点的编号满足二叉搜索树的性质。
- 节点 i 的权值为 p_i,每个节点的权值满足小根堆的性质。
Input
第一行一个整数 n。
第二行一个排列 p_{1 \dots n}。
Output
设 l_i,r_i 分别表示节点 i 的左右儿子的编号(若不存在则为 0)。
一行两个整数,分别表示
Examples
Input
5 4 1 3 2 5
Output
19 21
Hint
【样例解释】
i | l_i | r_i |
---|---|---|
1 | 0 | 0 |
2 | 1 | 4 |
3 | 0 | 0 |
4 | 3 | 5 |
5 | 0 | 0 |
【数据范围】
对于 30\% 的数据,n \le 10^3。
对于 60\% 的数据,n \le 10^5。
对于 80\% 的数据,n \le 10^6。
对于 90\% 的数据,n \le 5 \times 10^6。
对于 100\% 的数据,1 \le n \le 10^7。