题解 | #成绩排序#
成绩排序
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")