#YBT54. 「一本通 4.6 练习 2」郁闷的出纳员
「一本通 4.6 练习 2」郁闷的出纳员
题目描述
OIER 公司是一家大型软件公司,员工众多。作为出纳员,需要统计员工工资,然而老板经常调整员工工资,心情好时给每位员工工资加上相同量,心情不好时则扣除相同量。
员工对频繁的工资调整,尤其是集体扣工资较为反感。若员工工资低于合同规定的工资下界,会立刻离职且不再返回,公司的工资下界是统一规定的。每当有员工离职,需从电脑中删除其工资档案;新员工入职时,要为其新建工资档案。
老板常询问当前工资第 多的员工工资情况,每次询问时,出纳员都需对大量员工工资进行排序后告知答案。
现在要求编写一个工资统计程序,来处理上述关于员工工资的各种操作。
输入格式
- 第一行包含两个非负整数 。其中 表示后续命令的条数, 表示工资的下界。
- 接下来的 行,每行表示一个命令,命令类型及格式和作用如下:
- I 命令:格式为
I k
,表示新建一个工资档案,新员工初始工资为 。若 ,该员工会立刻离开公司(此情况不计入后续离职员工统计)。 为非负整数。 - A 命令:格式为
A k
,表示把每位在职员工的工资加上 。 为非负整数。 - S 命令:格式为
S k
,表示把每位在职员工的工资扣除 。 为非负整数。 - F 命令:格式为
F k
,表示查询当前工资第 多的员工的工资数。 为正整数。
- I 命令:格式为
程序初始时,公司内无员工。
输出格式
- 输出的行数为 F 命令的条数加一。
- 对于每条 F 命令,输出一行,包含一个整数:
- 若 不大于当前在职员工的数目,输出当前工资第 多的员工所拿的工资数。
- 若 大于当前在职员工的数目,则输出 。
- 输出文件的最后一行包含一个整数,表示离开公司的员工的总数(不包括因初始工资低于工资下界而离开公司的情况)。
输入输出样例
输入样例
9 10
I 60
I 70
S 50
F 2
I 30
S 15
A 5
F 1
F 2
输出样例
10
20
-1
2
样例解释
- 初始工资下界为 10,先执行
I 60
,新员工工资 60 大于 10,入职。 - 执行
I 70
,新员工工资 70 大于 10,入职。 - 执行
S 50
,两位员工工资分别变为 10 和 20。 - 执行
F 2
,查询第 2 多的工资,此时第 2 多的工资为 10,输出 10。 - 执行
I 30
,新员工工资 30 大于 10,入职。 - 执行
S 15
,三位员工工资分别变为 -5(离职)、5(离职)、15。 - 执行
A 5
,剩余一位员工工资变为 20。 - 执行
F 1
,查询第 1 多的工资,此时第 1 多的工资为 20,输出 20。 - 执行
F 2
, 大于当前员工数 1,输出 -1。 - 最终离开公司的员工总数(不包括初始工资低于下界的情况)为 2,输出 2。
数据范围与提示
- 对于全部数据:
- I 命令的条数不超过 。
- A 命令和 S 命令的总条数不超过 。
- F 命令的条数不超过 。
- 每次工资调整的调整量(A 命令和 S 命令中的 )不超过 。
- 新员工的工资(I 命令中的 )不超过 。