A93497.多重集
普及+/提高
官方
通过率:0%
时间限制:1.00s
内存限制:128MB
题目描述
给定一个包含 n 个整数的多重集。你需要处理两种类型的操作:
- 向多重集中添加整数 k;
- 查询并删除多重集中第 k 小的数。
多重集中的第 k 小数:把所有元素从小到大排序后,第 k 个元素。若某个数出现多次,删除时只删掉其中一个。
所有操作完成后:
- 如果多重集为空,输出 0;
- 否则输出多重集中的任意一个数。
输入格式
第一行两个整数 n,q(1≤n,q≤106)。
第二行 n 个整数 a1,a2,…,an(保证 1≤a1≤a2≤⋯≤an≤n)。
第三行 q 个整数 k1,k2,…,kq:
- 若 1≤ki≤n:表示插入 ki;
- 若 ki<0:表示删除第 ∣ki∣ 小的数(保证 ∣ki∣ 不超过当前多重集大小)。
输出格式
若最终多重集为空输出 0,否则输出任意一个元素。
输入输出样例
输入#1
5 5 1 2 3 4 5 -1 -1 -1 -1 -1
输出#1
0
输入#2
5 4 1 2 3 4 5 -5 -1 -3 -1
输出#2
3
输入#3
6 2 1 1 1 2 3 4 5 6
输出#3
6
说明/提示
样例解释
- 样例 #1:连续删最小的 5 次,多重集变空,输出 0。
- 样例 #2:按要求依次删除第 5,1,3,1 小,最后剩下的元素里可以输出 3。
- 样例 #3:插入 5 和 6 后,多重集不空,输出任意一个都行(这里输出 6)。