CF1354D Multiset
题目描述
注意,本题的内存限制不同于常规题目。
给定一个包含 $n$ 个整数的多重集。你需要处理两种类型的操作:
- 向多重集中添加整数 $k$;
- 查询并删除多重集中第 $k$ 小的数。
多重集中的第 $k$ 小数,指的是将多重集中的所有元素从小到大排序后,第 $k$ 个元素。例如,如果多重集包含元素 $1$、$4$、$2$、$1$、$4$、$5$、$7$,且 $k=3$,那么排序后为 $[1, 1, 2, 4, 4, 5, 7]$,第 $3$ 小的数是 $2$。如果要删除的元素在多重集中出现多次,仅删除其中一个。
在所有操作完成后,输出多重集中的任意一个数。如果多重集为空,输出 $0$。
输入格式
第一行包含两个整数 $n$ 和 $q$($1 \le n, q \le 10^6$),分别表示初始多重集中的元素个数和操作次数。
第二行包含 $n$ 个整数 $a_1, a_2, \ldots, a_n$($1 \le a_1 \le a_2 \le \dots \le a_n \le n$),表示多重集中的元素。
第三行包含 $q$ 个整数 $k_1, k_2, \ldots, k_q$,每个整数代表一个操作:
- 如果 $1 \le k_i \le n$,则第 $i$ 个操作为“将 $k_i$ 插入多重集”;
- 如果 $k_i < 0$,则第 $i$ 个操作为“删除多重集中第 $|k_i|$ 小的数”。对于此操作,保证 $|k_i|$ 不大于当前多重集的大小。
输出格式
如果所有操作后多重集为空,输出 $0$。
否则,输出多重集中任意一个元素。
说明/提示
在第一个样例中,多重集中的所有元素都被删除了。
在第二个样例中,元素 $5$、$1$、$4$、$2$ 被依次删除。
在第三个样例中,$6$ 不是唯一的答案。
由 ChatGPT 4.1 翻译