Logo HelloWorld信息学奥赛题库

少儿编程

时间限制:1 s 空间限制:256 MB

#2164. 【模板】可持久化平衡树

统计

题目背景

本题为题目 普通平衡树 的可持久化加强版。
数据已经经过强化

题目描述

您需要写一种数据结构(可参考题目标题),来维护一些数,其中需要提供以下操作(对于各个以往的历史版本):
插入x数
删除x数(若有多个相同的数,因只删除一个,如果没有请忽略该操作)
查询x数的排名(排名定义为比当前数小的数的个数+1。若有多个相同的数,因输出最小的排名)
查询排名为x的数
求x的前驱(前驱定义为小于x,且最大的数,如不存在输出-2147483647)
求x的后继(后继定义为大于x,且最小的数,如不存在输出2147483647)
和原本平衡树不同的一点是,每一次的任何操作都是基于某一个历史版本,同时生成一个新的版本。(操作3, 4, 5, 6即保持原版本无变化)
每个版本的编号即为操作的序号(版本0即为初始状态,空树)

输入格式:

第一行包含一个正整数N,表示操作的总数。
接下来每行包含三个正整数,第 $i$ 行记为 $v_i, opt_i, x_i$。
$v_i$表示基于的过去版本号( $ 0 \"leq v_i < i$ ),$opt_i$ 表示操作的序号( $ 1 \"leq opt \"leq 6 $ ), $x_i$ 表示参与操作的数值

输出格式:

每行包含一个正整数,依次为各个3,4,5,6操作所对应的答案

输入样例#1:

10
0 1 9
1 1 3
1 1 10
2 4 2
3 3 9
3 1 2
6 4 1
6 2 9
8 6 3
4 5 8

输出样例#1:

9
1
2
10
3