#1323. 「一本通 4.6 练习 3」普通平衡树

「一本通 4.6 练习 3」普通平衡树

题目描述

请你维护一个可以支持以下操作的有序整数集合:

  1. 插入一个数 xx
  2. 删除一个数 xx,若有多个相同的数,只删除一个;
  3. 查询数 xx 的排名,即集合中小于 xx 的数的个数加 11
  4. 查询排名为 xx 的数;
  5. 查询 xx 的前驱,即小于 xx 且最大的数;
  6. 查询 xx 的后继,即大于 xx 且最小的数。

输入格式

第一行包含一个整数 nn,表示操作次数。

接下来 nn 行,每行包含两个整数 optoptxx,表示一次操作:

  • opt=1opt=1:插入 xx
  • opt=2opt=2:删除 xx
  • opt=3opt=3:查询 xx 的排名;
  • opt=4opt=4:查询排名为 xx 的数;
  • opt=5opt=5:查询 xx 的前驱;
  • opt=6opt=6:查询 xx 的后继。

输出格式

对于每个 optin3,4,5,6opt in {3,4,5,6} 的操作,输出一行一个整数,表示答案。

10
1 106465
4 1
1 317721
1 460929
1 644985
1 84185
1 89851
6 81968
1 492737
5 493598
106465
84185
492737

数据范围与提示

  • 1n1051 \le n \le 10^5
  • x107|x| \le 10^7
  • 保证所有查询操作合法

来源

一本通 4.6 练习 3,LOJ #104