U4466.方程式
通过率:0%
时间限制:1.00s
内存限制:128MB
题目描述
Background
F1 方程式赛车竞赛,是技术的较量。
Description
每个 F1 赛季由一系列名为“Grand Prix”的比赛组成,由国际汽车联合会(FIA)组织。每场 Grand Prix 的结果被合并以确定车手的世界锦标赛。更具体地说,对于每场比赛,会给予车手一定的积分,取决于他们在比赛中的排名。赛季结束时,获得最多积分的车手被宣布为世界冠军。
F1 组织者不断修改竞赛规则,旨在为粉丝提供更多的刺激和悬念。2010 年赛季修改的一个规则是在每场Grand Prix 中分配积分。自 2003 年起,积分规则奖励排名前八的车手,按照以下表格进行奖励:
名次 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
---|---|---|---|---|---|---|---|---|
积分 | 10 | 8 | 6 | 5 | 4 | 3 | 2 | 1 |
也就是说,获胜的车手获得 10 分,第二名获得 8 分,依此类推。在 2010 年赛季中,排名前十的车手将获得积分,遵循以下表格:
名次 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
---|---|---|---|---|---|---|---|---|---|---|
积分 | 25 | 18 | 15 | 12 | 10 | 8 | 6 | 4 | 2 | 1 |
积分制度的变化引起了许多关于过去如果使用新的积分制度将会对世界锦标赛产生何种影响的猜测。例如,考虑到刘易斯·汉密尔顿和费利佩·马萨仅相差一分,汉密尔顿会在 2008 年成为冠军吗?
为了终结这种猜测,国际汽车联合会(FIA)雇用您编写一个程序,根据赛季每场比赛的结果,确定不同积分制度下的世界冠军。
Format
Input
输入包含多个测试案例。每个测试案例的第一行包含两个整数 G 和 P,由空格分隔,表示比赛的数量(1≤G≤100)和赛车手的数量(1≤P≤100)。赛车手通过从 1 到 Q 的整数进行标识。接下来的 G 行表示每场比赛的结果,每行包含 P 个整数,由空格分隔。每行中的第 i 个数字表示赛车手 i 在该场比赛中的到达顺序(第一个数字表示赛车手 1 在该场比赛中的到达顺序,第二个数字表示赛车手 2 在该场比赛中的到达顺序,依此类推)。接下来的一行包含一个整数 S,表示评分系统的数量(1≤S≤10)。然后,每个测试案例的接下来的 S 行包含一个评分系统的描述。评分系统的描述以一个整数 K(1≤K≤P)开始,表示获得积分的最后一名名次,后面是 K 个整数 k0,k1,...,kn−1(1≤ki≤100),由空格分隔,表示分配的积分数(第一个整数表示第一名的积分,第二个整数表示第二名的积分,依此类推)。
输入的最后一行包含两个整数 0 0,表示输入结束。
Output
对于输入中的每个评分系统,你的程序必须输出一行,包含世界冠军的标识。如果有多个赛车手获得世界冠军(即存在并列情况),则该行必须包含所有世界冠军,按照标识的升序排列,用空格分隔。
Samples
input:
1 3
3 2 1
3
3 5 3 2
3 5 3 1
3 1 1 1
3 10
1 2 3 4 5 6 7 8 9 10
10 1 2 3 4 5 6 7 8 9
9 10 1 2 3 4 5 6 7 8
2
5 5 4 3 2 1
3 10 5 1
2 4
1 3 4 2
4 1 3 2
2
3 3 2 1
3 5 4 2
0 0
output:
3
3
1 2 3
3
3
2 4
4
Hint
样例输出前三行说明:
一共进行 1 场赛车竞赛,共 3 名车手。这次竞赛第一名到第三名 3,2,1。随后这一年共调整了 3 次积分规则,在积分规则 5,3,2 这次中,车手 3 获得积分 5 最高,是冠军;再积分规则 5,3,1 这次中,还是车手 3 获得积分 5 最高,是冠军;再积分规则 1,1,1 这次中,三名车手均获得 1 积分,并列冠军,输出时按照从小到大的顺序输出。
多组样例输入直到 0 0 的循环可以这样判断:
while (cin>> g >> p) {
if (g == 0 && p == 0) break;
...
}
Limitation
1s, 128MiB for each test case.