题目链接:https://acs.jxnu.edu.cn/problem/HDU2384
描述:
举办编程比赛很有趣,但也需要大量工作。例如,在一天结束时,陪审团将不得不根据他们在比赛中的结果来创建团队的排名。这可能很繁琐,因此我们希望您为此任务编写一个程序。
对于 BAPC,排名规则如下:
团队根据解决的问题最多排名;并列的球队按使用的总时间增加排序。
用于问题的时间是比赛开始到第一次被接受的运行之间的分钟数,加上每次被拒绝运行的 20 分钟罚款,直到第一次被接受的运行。
使用的总时间是解决每个问题所用时间的总和(如上所述)。请注意,未接受运行的问题的惩罚时间不计入使用的总时间。
如果比赛结束时仍保持平局,则平局球队之间的比较点将是他们得分不同的最后一个时间点(例如,如果两队在比赛结束时打成平手,较早解决最后一个问题的球队比其他团队解决最后一个问题获胜)。
在比赛期间,团队提交问题的解决方案,由陪审团处理作为运行。每次运行都有四个属性:
自比赛开始以来的提交时间(以分钟为单位)(1 到 300 之间的整数,包括);
提交解决方案的团队名称(最多 20 个小写字母的非空字符串);
对应问题的标识符(大写字母 A 到 J,包括);
由评审软件确定的结果(接受或拒绝)。
在比赛结束时,我们有一个可用的运行列表(按非递减提交时间排序),我们希望您确定团队的最终排名。
并列的队伍将共享一个位置;这些团队应在结果中按字母顺序排列。
输入:
在第一行一个整数 t (1 <= t <= 100):测试用例的数量。 然后对于每个测试用例:
一行包含团队数量 t (1 <= t <= 50) 和运行次数 r (0 <= r <= 5 000),由一个空格分隔;
然后是 t 行,每行都有一个团队的名称;
然后是 r 行,每行都有运行的描述:时间、团队、问题和结果,格式如上所述,并由单个空格分隔。
输出:
对于每个测试用例:
打印排序的结果:t 行,每行有一个排名(从 1 开始)、团队名称、正确解决问题的数量和总罚时,用单个空格分隔。
样例输入:
1
8 28
twente
utrecht
groningen
amsterdam
eindhoven
leiden
delft
nijmegen
5 utrecht B rejected
8 eindhoven F accepted
10 utrecht F accepted
17 utrecht B rejected
18 leiden C rejected
23 twente F rejected
25 utrecht B accepted
26 amsterdam D rejected
27 amsterdam D accepted
27 leiden C accepted
27 groningen F accepted
28 twente F rejected
30 nijmegen C rejected
30 nijmegen C accepted
30 delft B accepted
30 delft B rejected
33 twente F accepted
47 groningen D rejected
51 leiden D accepted
51 amsterdam C accepted
51 groningen D accepted
60 utrecht D accepted
65 utrecht J accepted
67 twente F rejected
70 twente F accepted
90 eindhoven D accepted
100 utrecht A rejected
101 utrecht C rejected
样例输出:
1 utrecht 4 200
2 groningen 2 98
3 amsterdam 2 98
3 leiden 2 98
5 eindhoven 2 98
6 delft 1 30
7 nijmegen 1 50
8 twente 1 73