3375. 成绩排序
作者:
lvjj
,
2024-04-03 17:35:19
,
所有人可见
,
阅读 7
#include <bits/stdc++.h>
using namespace std;
struct student{
string name;
int num;
};
bool cmp1(const student &s1,const student &s2){
if(s1.num!=s2.num){
return s1.num<s2.num;
}
return false;//元素大小相同的话,就不用改变相同元素之间的相对位置
}
bool cmp2(const student &s1,const student &s2){
if(s1.num!=s2.num){
return s1.num>s2.num;
}
return false;
}
int main(){
vector<student> s;//将每个结构体对象存到vector
s.resize(1010);//最多一千个学生
int n,m;
cin>>n;//输入n个学生信息
cin>>m;//表示升序或者降序
for(int i=0;i<n;i++){
cin>>s[i].name>>s[i].num;//对学生学习初始化
}
//stable_sort可使相对次序不被改变。
if(m==1)stable_sort(s.begin(),s.begin()+n,cmp1);//但是此题加了降序升序,这里用自定义排序比较好
if(m==0)stable_sort(s.begin(),s.begin()+n,cmp2);//0是降序,用cmp2
for(int i=0;i<n;i++)cout<<s[i].name<<' '<<s[i].num<<endl;
return 0;
}