#YBT54. 「一本通 4.6 练习 2」郁闷的出纳员

    ID: 1703 传统题 1000ms 512MiB 尝试: 1 已通过: 1 难度: 10 上传者: 标签>数据结构平衡树NOI早于 2010一本通提高

「一本通 4.6 练习 2」郁闷的出纳员

题目描述

OIER 公司是一家大型软件公司,员工众多。作为出纳员,需要统计员工工资,然而老板经常调整员工工资,心情好时给每位员工工资加上相同量,心情不好时则扣除相同量。

员工对频繁的工资调整,尤其是集体扣工资较为反感。若员工工资低于合同规定的工资下界,会立刻离职且不再返回,公司的工资下界是统一规定的。每当有员工离职,需从电脑中删除其工资档案;新员工入职时,要为其新建工资档案。

老板常询问当前工资第 kk 多的员工工资情况,每次询问时,出纳员都需对大量员工工资进行排序后告知答案。

现在要求编写一个工资统计程序,来处理上述关于员工工资的各种操作。

输入格式

  1. 第一行包含两个非负整数 n,minn,\min。其中 nn 表示后续命令的条数,min\min 表示工资的下界。
  2. 接下来的 nn 行,每行表示一个命令,命令类型及格式和作用如下:
    • I 命令:格式为 I k,表示新建一个工资档案,新员工初始工资为 kk。若 k<mink < \min,该员工会立刻离开公司(此情况不计入后续离职员工统计)。kk 为非负整数。
    • A 命令:格式为 A k,表示把每位在职员工的工资加上 kkkk 为非负整数。
    • S 命令:格式为 S k,表示把每位在职员工的工资扣除 kkkk 为非负整数。
    • F 命令:格式为 F k,表示查询当前工资第 kk 多的员工的工资数。kk 为正整数。

程序初始时,公司内无员工。

输出格式

  1. 输出的行数为 F 命令的条数加一。
  2. 对于每条 F 命令,输出一行,包含一个整数:
    • kk 不大于当前在职员工的数目,输出当前工资第 kk 多的员工所拿的工资数。
    • kk 大于当前在职员工的数目,则输出 1-1
  3. 输出文件的最后一行包含一个整数,表示离开公司的员工的总数(不包括因初始工资低于工资下界而离开公司的情况)。

输入输出样例

输入样例

9 10
I 60
I 70
S 50
F 2
I 30
S 15
A 5
F 1
F 2

输出样例

10
20
-1
2

样例解释

  1. 初始工资下界为 10,先执行 I 60,新员工工资 60 大于 10,入职。
  2. 执行 I 70,新员工工资 70 大于 10,入职。
  3. 执行 S 50,两位员工工资分别变为 10 和 20。
  4. 执行 F 2,查询第 2 多的工资,此时第 2 多的工资为 10,输出 10。
  5. 执行 I 30,新员工工资 30 大于 10,入职。
  6. 执行 S 15,三位员工工资分别变为 -5(离职)、5(离职)、15。
  7. 执行 A 5,剩余一位员工工资变为 20。
  8. 执行 F 1,查询第 1 多的工资,此时第 1 多的工资为 20,输出 20。
  9. 执行 F 2k=2k = 2 大于当前员工数 1,输出 -1。
  10. 最终离开公司的员工总数(不包括初始工资低于下界的情况)为 2,输出 2。

数据范围与提示

  1. 对于全部数据:
    • I 命令的条数不超过 10510^5
    • A 命令和 S 命令的总条数不超过 100100
    • F 命令的条数不超过 10510^5
  2. 每次工资调整的调整量(A 命令和 S 命令中的 kk)不超过 10310^3
  3. 新员工的工资(I 命令中的 kk)不超过 10510^5