#509. 赛事预测
赛事预测
问题背景
第 X 届广西科技大学程序设计竞赛正在进行中,作为现场技术人员,你需要根据所有队伍的提交记录,计算并生成最终的排行榜。这不仅关系到各支队伍的排名,也是赛事公平性的重要体现。小周作为上届金牌得主,也在现场关注着比赛进程,他很想知道最终的排名结果。
问题描述
给定所有参赛队伍的提交记录,请你按照 ACM 竞赛规则计算并输出最终的排行榜,同时计算本次比赛金奖、银奖、铜奖的获奖队伍数量。具体规则如下:
- 排行榜排序规则:
-
首要依据为 “解出题目数量”,降序排列(解出越多排名越前)。
-
若解出数量相同,依据 “总罚时” 升序排列(罚时越少排名越前)。
-
若解出数量和罚时均相同,按队名字典序升序排列(字母序靠前的排名更前)。
-
ps: 关于字典序
字典序是一种基于字符编码的排序方法。
在字典序中,字符串的比较是从左到右逐个字符进行的。
首先比较第一个字符,如果相同则继续比较第二个字符,以此类推。
如果某个字符串是另一个字符串的前缀(前缀是指从串首开始到某个位置结束的一个特殊子串。
例如: abc 是 abcdef 的前缀),则较短的字符串排在前面。
例如,比较 apple 和 banana 时,
我们看到第一个不同的字符是 a 和 b 。
在字母表中,a 在 b 之前,因此 apple 在 banana 之前。
又例如,比较 abaaa 和 aba 时,
因为 aba 是 abaaa 的前缀,
所以 aba 在 abaaa 之前。
-
总罚时计算:
-
对于每道成功解出(结果为 “AC”)的题目,罚时 = 该题首次 的时间 ( 前的错误提交次数 分钟)。
-
未解出的题目(结果非 ),其错误提交不计算罚时。
-
-
奖项设置:
-
有效队伍数:指至少有一次提交记录的队伍总数。
-
金奖数量 = (向上取整)。
-
银奖数量 = 。
-
铜奖数量 = 。
-
输入格式
输入一个正整数 ,表示本次比赛后台一共有 条提交记录。
接下来 行,
每行提交记录格式为:队名 题号 结果 时间,其中
-
队名:由大小写字母、数字或下划线组成,不含空格,长度 1 ~ 20。
-
题号:单个大写字母,表示题目编号。
-
结果:字符串,"AC" 表示通过,其他字符串(如 WA、TLE、MLE 等)均表示未通过。
-
时间:非负整数,表示提交时间(单位:分钟),范围 0 ~ 300(竞赛时长为 5 小时)。
ps:提交记录是按提交时间递增的顺序输入的。
输出格式
输出分为两部分:
-
排行榜:每行表示一个队伍的信息,格式为 排名 队名 解出数量 总罚时。
- 若当前队伍与前一名的解出数量或罚时不同,则排名为 “前一名排名 + 1”;
- 若两者均相同(并列),则排名与前一名相同,队名字典序小的在前。
-
奖项数量:最后一行输出三个整数,分别表示金奖、银奖、铜奖的队伍数量,用空格分隔。
输入样例
8
Team3 A WA 50
Team3 B WA 60
Team2 B WA 80
Team1 A WA 90
Team0 A AC 100
Team1 A AC 110
Team2 C WA 110
Team2 C AC 120
输出样例
1 Team0 1 100
2 Team1 1 130
3 Team2 1 140
4 Team3 0 0
1 1 1
说明
- 提交记录处理:
-
Team0:解出 A(首次 AC 时间 100,错误提交 0 次),总罚时 100。
-
Team1:解出 A(首次 AC 时间 110,AC 前错误提交 1 次),总罚时 110 + 1×20 = 130。
-
Team2:解出 C(首次 AC 时间 120,AC 前错误提交 1 次(110 分钟的 WA)),总罚时 120 + 1×20 = 140(B 题未 AC,错误提交不计时)。
-
Team3:未解出任何题目,总罚时 0。
-
有效队伍数:4 支(Team0~Team3 均有提交)。
- 奖项计算:
- 金奖:$\left \lceil 4×0.10 \right \rceil = \left \lceil 0.4 \right \rceil = 1。$
- 银奖:$\left \lceil 4×0.15 \right \rceil = \left \lceil 0.6 \right \rceil = 1。$
- 铜奖:$\left \lceil 4×0.20 \right \rceil = \left \lceil 0.8 \right \rceil = 1。$
评测数据规模
对于所有评测数据,。