#abc241d. [abc241_d]Sequence Query

[abc241_d]Sequence Query

题目描述

我们有一个空序列 AA
给定 QQ 个查询,按顺序处理它们。
每个查询有以下三种类型之一。

  • 1 x:将 xx 插入到 AA 中。

  • 2 x k:在 AA 的元素中找到小于等于 xx 的第 kk 大的值。 (kk 不超过 bf5\\bf{5})
    如果 AA 中小于等于 xx 的元素数量少于 kk,则输出 -1

  • 3 x k:在 AA 的元素中找到大于等于 xx 的第 kk 小的值。 (kk 不超过 bf5\\bf{5})
    如果 AA 中大于等于 xx 的元素数量少于 kk,则输出 -1

约束条件

  • 1leqQleq2times1051\\leq Q \\leq 2\\times 10^5
  • 1leqxleq10181\\leq x\\leq 10^{18}
  • 1leqkleq51\\leq k\\leq 5
  • 输入中的所有值都是整数。

输入

从标准输入读取输入数据,输入格式如下:

QQ textquery1\\text{query}_1 textquery2\\text{query}_2 vdots\\vdots textqueryQ\\text{query}_Q

在第 ii 个查询 textqueryi\\text{query}_i 中,首先给出查询类型 cic_i (可能是 1,21, 233)。
如果 ci=1c_i=1,后面还会给出 xx;如果 ci=2,3c_i=2, 3,后面还会给出 xxkk

换句话说,每个查询的格式如下:

11 xx 22 xx kk 33 xx kk

输出

输出 qq 行,其中 qq 是满足 ci=2,3c_i=2,3 的查询数量。
jj 行(1leqjleqq1\\leq j\\leq q)应该包含第 jj 个这样的查询的答案。


示例输入 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

在处理了 textquery1,2,3,4\\text{query}_{1,2,3,4} 之后,有 A=(20,10,30,20)A=(20,10,30,20)

对于 textquery5,6,7\\text{query}_{5,6,7}AA 中大于等于 1515 的元素为 (20,30,20)(20,30,20)
它们中的第一个最小值是 2020;第二个是 2020;第三个是 3030