2024 睿扛 谁进线下了?

  • 2025-12-21 12:59:54

5834. 谁进线下了? - AcWing题库

Xepa Legends 是一个第一人称射击类大逃杀(“吃鸡”)游戏,每轮游戏共有 20 支 3 人小队参加,最后获胜的队伍被称为“捍卫者”。

最近 Xepa Legends 举行了亚太地区南赛区的线上比赛,争夺 7 个前往德国曼海姆参加线下赛的资格,国内共有 14 支队伍参与到了其中。

因为比赛十分激烈,直到最后谁进了线下仍有巨大的疑问。

小 K 喜欢的国内知名战队 DreamTear 因其队内选手杀马特表现不佳,正好卡在出线分数前后,请你赶紧帮帮小 K,计算一下最后的分数情况,看看他喜欢的战队出线了没有吧!

Xepa Legends 的比赛共进行 N 场游戏,在每场游戏中,每支队伍在游戏中会获得一个排名和一个杀敌数(击败其他队伍玩家的数量),一支队伍在一场游戏的得分为杀敌数+排名分,排名分由队伍当场的排名根据以下表格求得:

排名分数第一名12 分第二名9 分第三名7 分第四名5 分第五名4 分第六名至第七名3 分第八名至第十名2 分第十一名至第十五名1 分第十六名至第二十名0 分

例如,

DreamTear 战队在第三场比赛获得了第三名、有 6 个杀敌数,那么他们将获得 7+6=13 分;KV 战队在第二场比赛获得了第 19 名、有 1 个杀敌数,那么他们将获得 0+1=1 分;SRN 战队在第四场比赛获得了第 1 名、有 9 个杀敌数,那么他们将获得 12+9=21 分。

注:本题与实际情况无关,所有比赛规则、队伍、队员名称均为虚构。

输入格式

输入第一行是一个正整数 N,表示有 N 场比赛。

接下来有 N 部分输入,每部分是一场比赛的情况。

对每一场比赛,信息共分 20 行,第 i 行(i=1,⋯,20)给出的两个非负整数 p 和 k 表示第 i 支队伍在这场比赛里获得了第 p 名、杀敌数为 k。

数据保证所有给定的情况中,排名永远大于等于 1 且小于等于 20,杀敌数小于等于 57。

输出格式

输出 20 行,按编号从小到大依次输出队伍的编号及该队全部游戏结束时的总分。

数据范围

1≤N≤20, 1≤p≤20, 0≤k≤57

输入样例:

3

6 2

7 3

11 5

10 1

2 9

5 8

14 3

4 3

1 6

18 1

12 1

20 0

13 0

3 2

16 4

8 1

19 0

9 4

17 1

15 0

8 2

19 1

12 2

1 9

10 1

7 5

18 0

14 0

5 2

4 4

2 5

6 2

16 3

13 1

20 0

3 7

9 3

15 0

17 5

11 3

18 0

5 2

2 9

9 4

4 7

10 3

16 0

1 6

20 0

15 1

6 0

3 6

14 3

7 4

19 0

17 0

8 9

11 0

13 5

12 0

输出样例:

1 9

2 13

3 27

4 30

5 33

6 25

7 4

8 27

9 24

10 12

11 19

12 18

13 8

14 18

15 4

16 17

17 16

18 8

19 12

20 6

难度:简单时/空限制:0.4s / 64MB总通过数:513总尝试数:694来源: 2024 睿抗机器人开发者大赛CAIP-编程技能赛-本科组(省赛)

代码:

#include

using namespace std;

int N,score[25],p[25];

int main(void)

{

p[1] = 12;

p[2] = 9;

p[3] = 7;

p[4] = 5;

p[5] = 4;

p[6] = 3,p[7] = 3;

p[8] = p[9] = p[10] = 2;

p[11] = p[12] = p[13] = p[14] = p[15] = 1;

p[16] = p[17] = p[18] = p[19] = p[20] = 0;

cin >> N;

while(N--)

{

for(int i = 1 ; i <= 20 ; i++)

{

int p1,k1;

cin >> p1 >> k1;

score[i] += p[p1] + k1;

}

}

for(int i = 1 ; i <= 20 ; i++)

{

cout << i << " " << score[i] << endl;

}

return 0;

}