#DLNU1009. 刷题笑传之Check Check Board
刷题笑传之Check Check Board
Description
应乌圣要求,小徐做了一个每日一题的推送功能,机器人账号每天早上 8:30 准时在工作室群里面推送三道不同难度的题目,供大家练习。为了提高大家的做题积极性,小徐为其增加了榜单功能,现在每道题都有一个分值,通过后即可获得它对应的分数,但这使得原本的屎山代码越堆越高,他实在是受不了了,于是请你来帮帮他。
每日一题的榜单由用户名、用户积分、和该用户三道题的通过情况构成,按照用户积分降序排序。用户有以下两种操作:
1. 查看榜单
2. 交题
现在服务器上的代码已经乱作一团,无法确保正确性,于是小徐把这一天中服务器上收到的指令按时间顺序交给了你,请你帮助他计算并完成这些操作和请求,以此来验证正确性。
Format
Input
第一行输入两个整数 分别代表系统已绑定用户人数(即榜单上已有的人数)和 当天服务器接收到的操作数量。
第二行输入三个正整数 , 分别代表今天的三道题的分值。 随后 行,每行包含一个仅有大小写字母、数字和下划线组成的字符串 和一个非负整数 ,分别代表用户和其当前积分。
随后 行表示服务器按照时间顺序接收到的操作指令,对于每行,首先输入一个整数 代表执行的操作种类:
若 ,代表查榜操作,该行结束。
若 ,代表用户交题,继续输入本次提交数据:用户名、题号(1、2 或 3)、过题状态("Y" 代表本题通过,"N" 代表未通过)。
输入确保交题的用户是榜单上已存在用户。
Output
对于每次查看榜单操作,打印出当前的榜单信息。格式如下:
排名;用户名;用户积分;三道题的通过状态(若已通过使用 'Y' 表示,否则使用 'N' 表示
例如:
1 hanser 200 N N N
2 Evonel 150 N N N
3 star_sparkle 100 N Y N
若某次查询榜单上存在多人分数相同,你可以随意决定这几人的次序。
Samples
3 9
8 12 21
star_sparkle 100
hanser 200
Evonel 150
1
2 hanser 2 N
2 hanser 1 N
2 hanser 3 N
1
2 hanser 1 Y
2 star_sparkle 2 Y
2 Evonel 1 Y
1
1 hanser 200 N N N
2 Evonel 150 N N N
3 star_sparkle 100 N N N
1 hanser 200 N N N
2 Evonel 150 N N N
3 star_sparkle 100 N N N
1 hanser 208 Y N N
2 Evonel 158 Y N N
3 star_sparkle 112 N Y N
6 12
10 14 18
tommy_shelby 100
ft111 200
Edger 150
wesher 80
ruizhidubu 150
hanser 0
2 ft111 1 Y
2 tommy_shelby 1 N
2 tommy_shelby 1 Y
1
2 hanser 2 Y
2 ft111 2 Y
2 wesher 1 Y
1
2 ruizhidubu 1 Y
2 ruizhidubu 1 Y
2 ft111 3 N
1
1 ft111 210 Y N N
2 Edger 150 N N N
3 ruizhidubu 150 N N N
4 tommy_shelby 110 Y N N
5 wesher 80 N N N
6 hanser 0 N N N
1 ft111 224 Y Y N
2 Edger 150 N N N
3 ruizhidubu 150 N N N
4 tommy_shelby 110 Y N N
5 wesher 90 Y N N
6 hanser 14 N Y N
1 ft111 224 Y Y N
2 ruizhidubu 160 Y N N
3 Edger 150 N N N
4 tommy_shelby 110 Y N N
5 wesher 90 Y N N
6 hanser 14 N Y N
Note
对于第二组样例,前两次的榜单中的第 2 名与第 3 名排名可以交换。
相关
在下列比赛中: