#L0669. 动态集合维护

动态集合维护

题目描述

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

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

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

输入格式

第一行为 nn,表示操作的个数。下面 nn 行每行有两个整数 opt\text{opt} 和 xx,opt\text{opt} 表示操作编号(1≤opt≤61 \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(集合中只有它一个);插入 317721317721、460929460929、644985644985、8418584185、8985189851;查询 8196881968 的排名得 8418584185(集合中比 8196881968 小的只有 8418584185);插入 492737492737;查询排名 55 的值得 492737492737。


对于 100%100\% 的数据,1≤n≤1051 \le n \le 10^5,∣x∣≤107|x| \le 10^7。

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