#P9117. *【pbds:tree】有序集合(Ordered Set)

*【pbds:tree】有序集合(Ordered Set)

有序集合(Ordered Set)

问题描述

给你一个非负整数集合 S={a0,,aN1} S = \{a_0, \dots, a_{N-1}\} 。请按顺序处理以下 Q Q 个查询:

  • 0 x:若 xS x \notin S ,则将 x x 插入 S S ;若 xS x \in S ,则不做任何操作。
  • 1 x:若 xS x \in S ,则从 S S 中删除 x x ;若 xS x \notin S ,则不做任何操作。
  • 2 x:输出 S S 中第 x x 小的元素(按升序排列);若 S<x |S| < x ,输出 -1
  • 3 x:输出 S S 中小于等于 x x 的元素个数。
  • 4 x:输出 S S 中小于等于 x x 的最大元素(若不存在,输出 -1)。
  • 5 x:输出 S S 中大于等于 x x 的最小元素(若不存在,输出 -1)。

约束条件

  • 0N5×105 0 \leq N \leq 5 \times 10^5
  • 1Q5×105 1 \leq Q \leq 5 \times 10^5
  • 0a0<<aN1109 0 \leq a_0 < \cdots < a_{N-1} \leq 10^9
  • 0x109 0 \leq x \leq 10^9
  • 1x 1 \leq x t=2 t = 2

输入格式

N QN\ Q
a0  aN1a_0\ \cdots\ a_{N-1}
t xt\ x
:
t xt\ x

其中每个查询由操作类型 t{0,1,2,3,4,5} t \in \{0,1,2,3,4,5\} 和参数 x x 组成。

3 17
10 20 30
2 1
2 2
2 3
3 19
3 20
3 21
4 19
4 20
4 21
0 0
2 1
0 0
2 1
1 0
2 1
1 0
2 1
10
20
30
1
2
2
10
20
20
0
0
10
10
0 4

2 1
3 1
4 1
5 1
-1
0
-1
-1