2133: ICPC成绩排名

内存限制:256 MB 时间限制:1 S 标准输入输出
题目类型:传统 评测方式:文本比较 上传者:
提交:4 通过:2

题目描述

ICPC区域赛的成绩是根据解决的问题数量进行排名,解决相同数量问题按总时间最少进行排名。
总时间是解决每个问题所耗费的时间之和,未解决的问题不会消耗时间。
每个问题所耗费的时间是从比赛开始到提交第一个通过代码的时间 + 先前拒绝的提交次数 × 20分钟的罚时。
在平局的情况下,最后一个正确提交的解决方案所耗费的时间更少的团队排名更高。
必要时重复此过程(倒数第 2 个正确提交的问题,倒数第 3 个正确提交的问题等)。
如果所有的平局都已经用完,仍然存在平局,则团队按团队编号顺序平级排名。
例如,如果比赛中有 3 个团队,团队 1 和 3 都排名第 1,则团队 2 将排名第 3(在这种情况下没有第 2 名)。
编写一个程序,根据提供的输入打印比赛的最终排名。

输入格式

输入的第一行包含四个用空格分隔的整数,分别是NT,NP,NS,NR,表示团队数、问题数、提交次数和要显示的最高排名数。
2 <= NT <= 100,1 <= NP <= 20,1 <= NS <= 10000,1 <= NR <= NT。
请注意,实际显示的最高排名团队可能小于NR。
接下来的 NS 行每行包含四个用空格分隔的整数,用于描述提交记录。
每个提交记录包括 T、P、t、D,分别表示团队编号、问题编号、提交时间和处理情况。提交时间是比赛开始后经过的分钟数。
1 <= T <= NT,1 <= P <= NP,0 <= t < 300,D = 0或1,分别表示提交被拒绝(错误)或接受(正确)。
t的值永远不会小于上一行的t的值。

输出格式

输出将包括比赛的排名结果(从最好到最差),显示所有排名为1到NR的团队。
每行将包含16个字符,分为四列。
第一列是排名占四个字符,左对齐。第二列是团队编号占四个字符,左对齐。
第三列是解决的问题数量占三个字符,右对齐。第四列是总时间占五个字符,右对齐。

输入样例 复制

50 12 45 2
16 1 2 1
50 1 5 1
3 1 5 1
16 11 8 0
16 7 10 1
3 7 11 1
50 7 11 1
16 8 14 1
3 11 16 0
3 9 24 1
50 8 27 1
16 11 29 0
50 11 39 1
16 9 41 1
3 8 42 1
50 9 50 1
3 11 52 1
3 10 56 1
16 5 62 1
16 11 72 1
3 3 75 1
50 3 77 1
16 3 103 1
3 3 132 0
3 5 138 1
16 2 147 0
16 2 155 0
16 10 169 1
16 2 188 0
16 2 197 1
50 5 232 1
3 4 253 1
50 10 270 0
50 10 270 0
50 10 270 0
50 10 270 0
50 10 270 0
50 10 270 0
50 10 270 0
50 10 270 0
50 10 270 0
50 10 270 0
50 10 270 0
3 6 299 1
50 10 299 1

输出样例 复制

1   3    10  975
2   16    9  770

数据范围与提示

注意:因为可能出现rank并列的情况,最后输出的是rank<=NR的队伍。
例如rank为:1 2 3 4 4 4 7 8 9,如果NR为4,则输出1 2 3 4 4 4。