题解 | 成绩排序
#include <bits/stdc++.h>
using namespace std;
struct sl{
string name;
int score;
int level;
};
bool compare0(sl x,sl y){
if(x.score!=y.score)return x.score>y.score;
else return x.level<y.level;
}
bool compare1(sl x,sl y){
if(x.score!=y.score)return x.score<y.score;
else return x.level<y.level;
}
int main(){
int n,r;
while(cin>>n>>r){
sl a[n];
for(int i=0;i<n;i++){
cin>>a[i].name>>a[i].score;
a[i].level=i;
}
if(r==0)sort(a,a+n,compare0);
else sort(a,a+n,compare1);
for(int i=0;i<n;i++){
cout<<a[i].name<<" "<<a[i].score<<endl;
}
}
}
考研算法练习题第一题,这题其实很简单,只需要用结构体就可以了,注意加上level,改写compare规则即可
查看3道真题和解析