📅  最后修改于: 2023-12-03 14:58:35.770000             🧑  作者: Mango
这是门|门 IT 2005比赛中的第80题,是一道经典的模拟题目。本题需要你模拟一个比赛框架,在框架中处理选手信息与比赛情况。
比赛的选手有编号、姓名和成绩三个属性,其中编号和成绩都是整数,姓名是字符串。选手信息输入完毕后,需要对选手按成绩进行排名,并输出排名结果。
比赛过程中需要处理两种操作:
本题需要使用结构体(struct)处理选手信息,将选手信息存储在一个数组中,并针对选手成绩进行排序。比赛过程中需要处理两种操作,分别对应修改选手成绩和清零所有选手成绩,对于每个操作需要根据具体情况进行相应处理。
#include <iostream>
#include <algorithm>
#include <cstring>
using namespace std;
const int N = 110;
struct Player {
int id;
char name[100];
int score;
} player[N];
bool cmp(Player a, Player b) {
if (a.score != b.score) return a.score > b.score;
else return a.id < b.id;
}
int main() {
int n;
cin >> n;
for (int i = 0; i < n; i++) {
cin >> player[i].id >> player[i].name >> player[i].score;
}
sort(player, player + n, cmp);
for (int i = 0; i < n; i++) {
printf("%d %s %d\n", player[i].id, player[i].name, player[i].score);
}
int m;
cin >> m;
while (m -- ) {
int k, s;
cin >> k >> s;
for (int i = 0; i < n; i++) {
if (player[i].id == k) player[i].score = s;
}
sort(player, player + n, cmp);
for (int i = 0; i < n; i++) {
printf("%d %s %d\n", player[i].id, player[i].name, player[i].score);
}
}
return 0;
}