题目描述
【模板】笛卡尔树
题目背景
本题部分写法可能触发 GCC15.1 在 O2 下的编译器 bug。建议 C++ 用户以 C++14(GCC9)提交代码。
题目描述
给定一个 的排列 ,构建其笛卡尔树。
即构建一棵二叉树,满足:
- 每个节点的编号满足二叉搜索树的性质。
- 节点 的权值为 ,每个节点的权值满足小根堆的性质。
输入格式
第一行一个整数 。
第二行一个排列 。
输出格式
设 分别表示节点 的左右儿子的编号(若不存在则为 )。
一行两个整数,分别表示 和 。
输入样例 #1
5
4 1 3 2 5
输出样例 #1
19 21
说明/提示
【样例解释】
输入样例 #2
25
21 5 12 10 17 16 15 13 7 2 19 23 22 8 4 25 9 18 3 6 1 11 24 20 14
输出样例 #2
66 631
输入样例 #3
30
26 7 16 14 10 9 12 3 28 8 20 15 29 25 11 5 18 23 24 17 4 13 22 6 21 19 27 30 1 2
输出样例 #3
493 289
【数据范围】
对于 的数据,。
对于 的数据,。
对于 的数据,。
对于 的数据,。
对于 的数据,。