#509. 赛事预测

赛事预测

问题背景

第 X 届广西科技大学程序设计竞赛正在进行中,作为现场技术人员,你需要根据所有队伍的提交记录,计算并生成最终的排行榜。这不仅关系到各支队伍的排名,也是赛事公平性的重要体现。小周作为上届金牌得主,也在现场关注着比赛进程,他很想知道最终的排名结果。

问题描述

给定所有参赛队伍的提交记录,请你按照 ACM 竞赛规则计算并输出最终的排行榜,同时计算本次比赛金奖、银奖、铜奖的获奖队伍数量。具体规则如下:

  1. 排行榜排序规则:
    • 首要依据为 “解出题目数量”,降序排列(解出越多排名越前)。

    • 若解出数量相同,依据 “总罚时” 升序排列(罚时越少排名越前)。

    • 若解出数量和罚时均相同,按队名字典序升序排列(字母序靠前的排名更前)。

ps: 关于字典序

字典序是一种基于字符编码的排序方法。
在字典序中,字符串的比较是从左到右逐个字符进行的。

首先比较第一个字符,如果相同则继续比较第二个字符,以此类推。

如果某个字符串是另一个字符串的前缀(前缀是指从串首开始到某个位置结束的一个特殊子串。
例如: abc 是 abcdef 的前缀),则较短的字符串排在前面。

例如,比较 apple 和 banana 时,
我们看到第一个不同的字符是 a 和 b 。
在字母表中,a 在 b 之前,因此 apple 在 banana 之前。

又例如,比较 abaaa 和 aba 时,
因为 aba 是 abaaa 的前缀,
所以 aba 在 abaaa 之前。
  1. 总罚时计算:

    • 对于每道成功解出(结果为 “AC”)的题目,罚时 = 该题首次 ACAC 的时间 ++ACAC 前的错误提交次数 ×20× 20 分钟)。

    • 未解出的题目(结果非 AC“AC”),其错误提交不计算罚时。

  2. 奖项设置:

    • 有效队伍数:指至少有一次提交记录的队伍总数。

    • 金奖数量 = 有效队伍数×0.10\left \lceil 有效队伍数 × 0.10 \right \rceil (向上取整)。

    • 银奖数量 = 有效队伍数×0.15\left \lceil有效队伍数 × 0.15\right \rceil

    • 铜奖数量 = 有效队伍数×0.20\left \lceil有效队伍数 × 0.20\right \rceil

输入格式

输入一个正整数 nn ,表示本次比赛后台一共有 nn 条提交记录。

接下来 nn 行, 每行提交记录格式为:队名 题号 结果 时间,其中

  • 队名:由大小写字母、数字或下划线组成,不含空格,长度 1 ~ 20。

  • 题号:单个大写字母AM(A-M),表示题目编号。

  • 结果:字符串,"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

说明

  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 均有提交)。

  1. 奖项计算:
  • 金奖:$\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。$

评测数据规模

对于所有评测数据,1n104 1 \leq n \leq 10^4