#P0977. 遗迹中的宝石能量
遗迹中的宝石能量
题目描述
在艾泽拉遗迹深处,探险队不断发掘出古老的宝石。每颗宝石上都刻有一个整数,代表它蕴含的能量值。每次发掘后,队长会立即将能量值记录在手册中(同一种能量值可能被多次记录,手册会保留所有记录)。
远道而来的收藏家时常会前来咨询:他会说出一个期望的能量值 ,队长需要根据手册已记录的能量值给出答复:
- 若手册中存在能量值恰好等于 的记录,则回答该能量值当前被记录的总次数;
- 若手册中不存在能量值等于 的记录,则需要从已记录的所有能量值中,找出与 最接近的一个(即绝对值差 最小)。如果存在多个最接近的能量值,队长会保守地给出其中最小的那个;
- 如果手册中还没有任何记录,队长只能遗憾地表示“暂无发现”,用 表示。
请你编写一个程序,帮助队长高效地处理一系列操作。
输入格式
第一行包含一个整数 ,表示操作的总次数。
接下来 行,每行描述一个操作,由两个整数组成:
- 第一个整数为操作类型, 表示发掘宝石(记录能量值), 表示收藏家咨询(查询)。
- 第二个整数为 ,表示发掘的能量值或咨询的期望值。
输出格式
对于每个类型为 的操作,输出一行一个整数,表示查询结果:
- 若存在能量值等于 ,输出其出现次数;
- 否则,若手册非空,输出最接近且最小的能量值;
- 若手册为空,输出 。
样例
7
2 5
1 8
2 5
1 2
2 5
1 5
2 5
-1
8
2
1
样例解释
第 次操作 2 5:手册为空,输出 。
第 次操作 1 8:手册记录 。
第 次操作 2 5:不存在 ,最接近的只有 ,距离 ,输出 。
第 次操作 1 2:手册记录变为 。
第 次操作 2 5:不存在 , 和 距离均为 ,同为最接近,按规则取较小的 ,输出 。
第 次操作 1 5:手册记录变为 。
第 次操作 2 5:存在 ,当前出现次数为 ,输出 。
数据范围
对于 的数据,。
对于 的数据,, 且 为整数。 输入中的所有操作类型只会是 或 ,不会出现其他非法操作。