A93503.序列查询

普及/提高-

官方

通过率:0%

时间限制:1.00s

内存限制:128MB

题目描述

有一个一开始为空的序列 序列A序列A(可以理解成一个“袋子”,里面的数允许重复)。

一共有 QQ 次操作,每次操作是下面三种之一:

  1. 1 x1\ x:把数字 xx 放进 序列A序列A 里(插入一个 xx)。
  2. 2 x k2\ x\ k:只看 序列A序列A 里所有满足 x\le x 的数字,把它们从大到小排好,输出第 kk 个(第 kk 大)。如果不够 kk 个,输出 1-1
  3. 3 x k3\ x\ k:只看 序列A序列A 里所有满足 x\ge x 的数字,把它们从小到大排好,输出第 kk 个(第 kk 小)。如果不够 kk 个,输出 1-1

输入格式

第一行一个整数 QQ
接下来 QQ 行,每行是一次操作(格式如上)。

输出格式

遇到操作 2233 时,输出一行答案。

输入输出样例

  • 输入#1

    11
    1 20
    1 10
    1 30
    1 20
    3 15 1
    3 15 2
    3 15 3
    3 15 4
    2 100 5
    1 1
    2 100 5

    输出#1

    20
    20
    30
    -1
    -1
    1

说明/提示

数据范围

  • 1Q2×1051\le Q\le 2\times 10^5
  • 1x10181\le x\le 10^{18}
  • 1k51\le k\le 5

样例解释

44 次插入后,序列A序列A 里有:[20,10,30,20][20,10,30,20]

接下来做 3 15 k3\ 15\ k:只看 15\ge 15 的数,就是 [20,30,20][20,30,20]
把它从小到大排成数组 BBB=[20,20,30]B=[20,20,30](下标从 11 开始)

  • 3 15 13\ 15\ 1:要第 11 小,B1=20B_1=20
  • 3 15 23\ 15\ 2:要第 22 小,B2=20B_2=20
  • 3 15 33\ 15\ 3:要第 33 小,B3=30B_3=30
  • 3 15 43\ 15\ 4:要第 44 小,但 BB 只有 33 个数,所以输出 1-1

再做 2 100 52\ 100\ 5:只看 100\le 100 的数,其实就是全部 [20,10,30,20][20,10,30,20]
从大到小排成 C=[30,20,20,10]C=[30,20,20,10],只有 44 个数,要第 55 大,不存在,所以输出 1-1

然后插入 11,现在 序列A=[20,10,30,20,1]序列A=[20,10,30,20,1]
再次做 2 100 52\ 100\ 5:从大到小排成 C=[30,20,20,10,1]C=[30,20,20,10,1],第 55 大是 C5=1C_5=1,所以输出 11

首页