#5887. 第K大

第K大

题目描述

你有一个初始为空的整数序列,需要支持以下操作:

  1. 插入操作:向序列中插入一个整数。
  2. 查询操作:查询当前序列中第 K 大的数,其中 K 是题目开始时给定的固定值。

注意

  • K 在整个过程中保持不变
  • 如果序列中的元素数量少于 K,则查询操作应返回当前序列中的最大数
  • 查询后不会从序列中移除任何元素

输入格式

第一行包含两个整数 Q 和 K (1 ≤ Q ≤ 2×10⁵, 1 ≤ K ≤ 10⁵),表示操作次数和固定的 K 值。

接下来 Q 行,每行描述一个操作:

  • 1 x:表示插入整数 x (-10⁹ ≤ x ≤ 10⁹) 到序列中。
  • 2:表示查询当前序列中第 K 大的数。

保证

  • 至少有一次查询操作
  • 所有操作合法
  • 查询操作时序列中一定有数字

输出格式

对于每个查询操作,输出一行,包含查询的结果。

如果序列中的元素数量少于 K,则输出当前序列中的最大数。

样例输入 #1

10 3
1 5
1 3
1 8
2
1 2
1 7
2
1 10
1 1
2

样例输出 #1

3
5
7

样例解释 #1

操作过程:

  1. 插入 5 → 序列:[5],元素数 < K,最大数为 5
  2. 插入 3 → 序列:[3, 5],元素数 < K,最大数为 5
  3. 插入 8 → 序列:[3, 5, 8],第3大是 3(排序后:[3, 5, 8])
  4. 查询 → 输出 3
  5. 插入 2 → 序列:[2, 3, 5, 8]
  6. 插入 7 → 序列:[2, 3, 5, 7, 8],第3大是 5
  7. 查询 → 输出 5
  8. 插入 10 → 序列:[1, 2, 3, 5, 7, 8, 10],第3大是 7
  9. 插入 1 → 序列:[1, 2, 3, 5, 7, 8, 10],第3大是 7
  10. 查询 → 输出 7

样例输入 #2

6 4
1 10
1 20
2
1 30
1 40
2

样例输出 #2

20
10

样例解释 #2

第一个查询时,序列为 [10, 20],元素数量少于 K=4,所以输出最大数 20。

第二个查询时,序列为 [10, 20, 30, 40],第4大是 10。

数据范围

数据规模分层

  • 对于 20% 的数据:1 ≤ Q ≤ 1000,1 ≤ K ≤ 100
  • 对于 40% 的数据:1 ≤ Q ≤ 5×10⁴,1 ≤ K ≤ 10⁴
  • 对于 70% 的数据:1 ≤ Q ≤ 10⁵,1 ≤ K ≤ 5×10⁴
  • 对于 100% 的数据:1 ≤ Q ≤ 2×10⁵,1 ≤ K ≤ 10⁵,-10⁹ ≤ x ≤ 10⁹