题解 | #成绩排序#
成绩排序
https://www.nowcoder.com/practice/8e400fd9905747e4acc2aeed7240978b
#include <iostream>
#include <algorithm>
using namespace std;
const int N = 210;
struct Stud
{
string name;
int score, id; //结构体加入一个id记录输入时顺序先后
}stud[N];
//按照要求重载一下大于号和小于号
bool cmp1(struct Stud a, struct Stud b)
{
if(a.score != b.score) return a.score < b.score;
else return a.id < b.id;
}
bool cmp2(struct Stud a, struct Stud b)
{
if(a.score != b.score) return a.score > b.score;
else return a.id < b.id;
}
int main() {
int n, op;
cin >> n >> op;
for(int i = 0; i < n; i ++)
{
cin >> stud[i].name >> stud[i].score;
stud[i].id = i;
}
if(!op) sort(stud, stud + n, cmp2);
else sort(stud, stud + n, cmp1);
for(int i = 0; i < n; i ++) cout << stud[i].name << " " << stud[i].score << endl;
return 0;
}
// 64 位输出请用 printf("%lld")
