#P5854. 【模板】笛卡尔树

【模板】笛卡尔树

题目描述

给定一个 1n1 \sim n 的排列 pp,构建其笛卡尔树。

即构建一棵二叉树,满足:

  1. 每个节点的编号满足二叉搜索树的性质。
  2. 节点 ii 的权值为 pip_i,每个节点的权值满足小根堆的性质。

输入格式

第一行一个整数 nn

第二行一个排列 p1np_{1 \dots n}

输出格式

li,ril_i,r_i 分别表示节点 ii 的左右儿子的编号(若不存在则为 00)。

一行两个整数,分别表示 xori=1ni×(li+1)\operatorname{xor}_{i = 1}^n i \times (l_i + 1)xori=1ni×(ri+1)\operatorname{xor}_{i = 1}^n i \times (r_i + 1)

5
4 1 3 2 5
19 21

提示

【样例解释】

ii lil_i rir_i
11 00
22 11 44
33 00
44 33 55
55 00

【数据范围】

对于 30%30\% 的数据,n103n \le 10^3

对于 60%60\% 的数据,n105n \le 10^5

对于 80%80\% 的数据,n106n \le 10^6

对于 90%90\% 的数据,n5×106n \le 5 \times 10^6

对于 100%100\% 的数据,1n1071 \le n \le 10^7