#L0669. 动态集合维护

动态集合维护

题目描述

你需要维护一个可重集合 MM,支持以下六种操作:

  1. 插入一个数 xxMM 中。
  2. MM 中删除一个数 xx(若有多个相同值,只删除一个)。
  3. 查询 MM 中严格小于 xx 的数的个数,再加 11(即 xx 的排名)。
  4. 查询 MM 中按升序排列后第 xx 位的数(第 11 位为最小值)。
  5. 查询 MMxx 的前驱(小于 xx 的最大数)。
  6. 查询 MMxx 的后继(大于 xx 的最小数)。

对于操作 3,5,63, 5, 6不保证 xx 一定在 MM 中。对于操作 4,5,64, 5, 6,保证答案一定存在。

输入格式

第一行为 nn,表示操作的个数。下面 nn 行每行有两个整数 opt\text{opt}xxopt\text{opt} 表示操作编号(1opt61 \leq \text{opt} \leq 6)。

输出格式

对于操作 3,4,5,63, 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

</p>

提示

样例说明

依次插入 106465106465;查询 11 的排名得 106465106465(集合中只有它一个);插入 31772131772146092946092964498564498584185841858985189851;查询 8196881968 的排名得 8418584185(集合中比 8196881968 小的只有 8418584185);插入 492737492737;查询排名 55 的值得 492737492737


对于 100%100\% 的数据,1n1051 \le n \le 10^5x107|x| \le 10^7

难度 提高+/省选
通过率
尝试 0
已通过 0
ID
1397
类型
传统题
Time Limit
1000ms
Memory Limit
128MiB
上传者