#P0977. 遗迹中的宝石能量

遗迹中的宝石能量

题目描述

在艾泽拉遗迹深处,探险队不断发掘出古老的宝石。每颗宝石上都刻有一个整数,代表它蕴含的能量值。每次发掘后,队长会立即将能量值记录在手册中(同一种能量值可能被多次记录,手册会保留所有记录)。

远道而来的收藏家时常会前来咨询:他会说出一个期望的能量值 XX,队长需要根据手册已记录的能量值给出答复:

  • 若手册中存在能量值恰好等于 XX 的记录,则回答该能量值当前被记录的总次数;
  • 若手册中不存在能量值等于 XX 的记录,则需要从已记录的所有能量值中,找出与 XX 最接近的一个(即绝对值差 ∣P−X∣|P - X| 最小)。如果存在多个最接近的能量值,队长会保守地给出其中最小的那个;
  • 如果手册中还没有任何记录,队长只能遗憾地表示“暂无发现”,用 −1-1 表示。

请你编写一个程序,帮助队长高效地处理一系列操作。

输入格式

第一行包含一个整数 QQ,表示操作的总次数。

接下来 QQ 行,每行描述一个操作,由两个整数组成:

  • 第一个整数为操作类型,11 表示发掘宝石(记录能量值),22 表示收藏家咨询(查询)。
  • 第二个整数为 XX,表示发掘的能量值或咨询的期望值。

输出格式

对于每个类型为 22 的操作,输出一行一个整数,表示查询结果:

  • 若存在能量值等于 XX,输出其出现次数;
  • 否则,若手册非空,输出最接近且最小的能量值;
  • 若手册为空,输出 −1-1。

样例

7
2 5
1 8
2 5
1 2
2 5
1 5
2 5
-1
8
2
1

样例解释

第 11 次操作 2 5:手册为空,输出 −1−1。

第 22 次操作 1 8:手册记录 [8][8]。

第 33 次操作 2 5:不存在 55,最接近的只有 88,距离 33,输出 88。

第 44 次操作 1 2:手册记录变为 [2, 8][2,\ 8]。

第 55 次操作 2 5:不存在 55,22 和 88 距离均为 33,同为最接近,按规则取较小的 22,输出 22。

第 66 次操作 1 5:手册记录变为 [2, 5, 8][2,\ 5,\ 8]。

第 77 次操作 2 5:存在 55,当前出现次数为 11,输出 11。

数据范围

对于 30%30\% 的数据,1≤Q≤10001\le Q\le 1000。

对于 100%100\% 的数据,1≤Q≤2×1051 \le Q \le 2\times 10^5,−109≤X≤109-10^9 \le X \le 10^9 且 XX 为整数。 输入中的所有操作类型只会是 11 或 22,不会出现其他非法操作。