A93497.多重集

普及+/提高

官方

通过率:0%

时间限制:1.00s

内存限制:128MB

题目描述

给定一个包含 nn 个整数的多重集。你需要处理两种类型的操作:

  • 向多重集中添加整数 kk
  • 查询并删除多重集中第 kk 小的数。

多重集中的第 kk 小数:把所有元素从小到大排序后,第 kk 个元素。若某个数出现多次,删除时只删掉其中一个。

所有操作完成后:

  • 如果多重集为空,输出 00
  • 否则输出多重集中的任意一个数。

输入格式

第一行两个整数 n,qn,q1n,q1061\le n,q\le 10^6)。

第二行 nn 个整数 a1,a2,,ana_1,a_2,\ldots,a_n(保证 1a1a2ann1\le a_1\le a_2\le\cdots\le a_n\le n)。

第三行 qq 个整数 k1,k2,,kqk_1,k_2,\ldots,k_q

  • 1kin1\le k_i\le n:表示插入 kik_i
  • ki<0k_i<0:表示删除第 ki|k_i| 小的数(保证 ki|k_i| 不超过当前多重集大小)。

输出格式

若最终多重集为空输出 00,否则输出任意一个元素。

输入输出样例

  • 输入#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:连续删最小的 55 次,多重集变空,输出 00
  • 样例 #2:按要求依次删除第 5,1,3,15,1,3,1 小,最后剩下的元素里可以输出 33
  • 样例 #3:插入 5566 后,多重集不空,输出任意一个都行(这里输出 66)。
首页