8431: 【深基16.例7】普通二叉树
[Creator : ]
Description
您需要写一种数据结构,来维护一些数( 都是 $10^9$ 以内的数字)的集合,最开始时集合是空的。其中需要提供以下操作,保证操作 $1,2,3,4$ 总次数不超过 $5\times 10^5$:
1. 查询 $x$ 数的排名(排名定义为比当前数小的数的个数 $+1$。若有多个相同的数,应输出最小的排名)。
2. 查询排名为 $x$ 的数。
3. 求 $x$ 的前驱(前驱定义为小于 $x$,且最大的数)。若未找到则输出 $-2147483647$。
4. 求 $x$ 的后继(后继定义为大于 $x$,且最小的数)。若未找到则输出 $2147483647$。
5. 插入一个数 $x$。
说明:本题来自洛谷,但是数据量比洛谷原题大。需要使用至少 $O(nlogn)$ 的算法。
1. 查询 $x$ 数的排名(排名定义为比当前数小的数的个数 $+1$。若有多个相同的数,应输出最小的排名)。
2. 查询排名为 $x$ 的数。
3. 求 $x$ 的前驱(前驱定义为小于 $x$,且最大的数)。若未找到则输出 $-2147483647$。
4. 求 $x$ 的后继(后继定义为大于 $x$,且最小的数)。若未找到则输出 $2147483647$。
5. 插入一个数 $x$。
说明:本题来自洛谷,但是数据量比洛谷原题大。需要使用至少 $O(nlogn)$ 的算法。
Input
第一行是一个整数 $q$,表示操作次数。
接下来 $q$ 行,每行两个整数 $op,x$,分别表示操作序号以及操作的参数 $x$。
接下来 $q$ 行,每行两个整数 $op,x$,分别表示操作序号以及操作的参数 $x$。
Output
输出有若干行。对于操作 $1,2,3,4$,输出一个整数,表示该操作的结果。
Sample 1 Input
7
5 1
5 3
5 5
1 3
2 2
3 3
4 3
Sample 1 Output
2
3
1
5