社区讨论
求代码 二分答案 玄关
学术版参与者 1已保存回复 0
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 0 条
- 当前快照
- 1 份
- 快照标识符
- @mhjo1ckp
- 此快照首次捕获于
- 2025/11/04 05:42 4 个月前
- 此快照最后确认于
- 2025/11/04 05:42 4 个月前
说明
水王有一个由 n 个整数组成的多重集。他希望你处理以下两种操作:
-将整数 k 加入集合;
-删除集合中第 k 小的数。
如果当前操作需要删除一个在集合中多次出现的元素,则只删除其中的一个。在处理所有操作之后,如果它是空的,输出 "0" ;否则输出集合中最小的数字。
输入格式
第一行包含两个整数 n 和 q(1≤n,q≤10^6) ——初始集合中的元素数和操作数。
第二行包含 n 个整数 a_1, a_2,…, a_n(1≤a_1≤a_2≤……≤a_n≤n) 表示多重集中的元素。
第三行包含 q 个整数k_1, k_2,…, k_q,每个 k 表示一个操作:
-如果 1≤k_i≤n ,则第 i 个操作为“在集合中加入 k_i”
-如果 k_i< 0 ,则第 i 个操作是“从集合中删除第 |k_i| 小的数”。对于这个操作,可以保证 |k_i| 不大于集合当前的大小。
输出格式
如果所有操作后的集合为空,则打印" 0 "。否则,输出集合中最小的数字。
样例
样例输入1
5 5
1 2 3 4 5
-1 -1 -1 -1 -1
样例输入2
5 4
1 2 3 4 5
-5 -1 -3 -1
样例输入3
6 2
1 1 1 2 3 4
5 6
样例输出1
0
样例输出2
3
样例输出3
1
样例解释
第一个样例,每次修改后的集合为:
2 3 4 5
3 4 5
4 5
5
空
因为集合最后为空,所以输出0
第二个样例,每次修改后的集合为:
1 2 3 4
2 3 4
2 3
3
最后集合剩下了3,所以输出3
第三个样例,每次修改后的集合为:
1 1 1 2 3 4 5
1 1 1 2 3 4 5 6
最后集合内还剩8个数字,因为要输出最小的数字,所以输出1
数据范围
数据点编号
n<=
q<=
1,2,3,4
500
5,6,7,8
5000
9,10,11,12
50000
13,14,15,16
200000
17,18,19,20
1000000
回复
共 0 条回复,欢迎继续交流。
正在加载回复...