AcWing 3375. 成绩排序
原题链接
简单
作者:
上下四方
,
2025-01-17 15:41:22
,
所有人可见
,
阅读 1
#include <iostream>
#include <algorithm>
#include <string>
using namespace std;
typedef struct student{
string name;
int pt,id; //快排不稳定,所以要定义插入顺序
}student;
student s[1000];
bool cmp1(student &a,student &b){
if(a.pt==b.pt){
return a.id<b.id;
}
else{
return a.pt>b.pt;
}
}
bool cmp2(student &a,student &b){
if(a.pt==b.pt){
return a.id<b.id;
}
else{
return a.pt<b.pt;
}
}
int main(){
int n,val;
cin>>n>>val;
for(int i=0;i<n;i++){
cin>>s[i].name>>s[i].pt;
s[i].id=i;
}
if(val==0){
sort(s,s+n,cmp1);
}
else{
sort(s,s+n,cmp2);
}
for(int i=0;i<n;i++){
cout<<s[i].name<<" "<<s[i].pt<<endl;
}
return 0;
}