#P9118. *【STL:multiset】双端优先队列(Double-Ended Priority Queue)

*【STL:multiset】双端优先队列(Double-Ended Priority Queue)

双端优先队列(Double-Ended Priority Queue)

问题描述

给定一个多重集 S={S1,,SN} S = \{S_1, \dots, S_N\} 。请按顺序处理以下 Q Q 个查询:

  • 0 x:将 x x 加入 S S
  • 1:输出 S S 中的一个最小元素,并将其从 S S 中删除。
  • 2:输出 S S 中的一个最大元素,并将其从 S S 中删除。

题目保证:在处理类型 1 和 2 的查询时,S S 非空。

约束条件

  • 0N5×105 0 \leq N \leq 5 \times 10^5
  • 1Q5×105 1 \leq Q \leq 5 \times 10^5
  • 1×109Si,x109 -1 \times 10^9 \leq S_i, x \leq 10^9

输入格式

N QN\ Q
S1  SNS_1\ \cdots\ S_N
Query0Query_0
:
QueryQ1Query_{Q-1}

4 10
-3 0 1 3
0 3
2
2
0 -2
0 1
1
1
2
1
2
3
3
-3
-2
1
0
1