A33810. 排名
填空题
困难
知识点
题目描述
排名
题目描述
某比赛有N(2≤N≤50)名选手参加,给定每名参赛选手的编号(1到N)和比赛得分(0≤得分≤100),请按照分数从高到低的顺序排序,如果分数相同就按照编号排序,编号小的排前边。
输入描述
第一行输入一个正整数N(2≤N≤50),表示参赛人数
第二行开始,共输入N行,每行两个正整数,分别表示参赛选手的编号和比赛得分(0≤得分≤100),正整数之间以一个空格隔开
输出描述
按照排序规则,输出N行,每行两个正整数,分别表示编号和得分,正整数之间以一个空格隔开
样例输入
3
3 84
1 87
2 84
样例输出
1 87
2 84
3 84
参考答案
#include<iostream>
#include<algorithm>
using namespace std;
struct Player {
int id;
int score;
} player[51];
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].score;
}
sort(player, player + n, cmp);
for (int i = 0; i < n; i++) {
cout << player[i].id << ' ' << player[i].score << endl;
}
return 0;
}
上一题
下一题