测评会员优惠活动进行中 · 开通 VIP,有效期内测评不限次 VIP 优惠中 · 测评不限次 立即查看

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; }
上一题 下一题