题目描述
按指定规则进行排序
知识点
排序
实现
码前思考
- 很久没做过这么水的题了,哭了
代码实现
//水题
#include <cstdio>
#include <iostream>
#include <string>
#include <algorithm>
using namespace std;
const int maxn = 1e5+10;
struct stu{
int id;
string name;
int grade;
stu(){}
stu(int i,string n,int g){
id = i;
name = n;
grade = g;
}
}stus[maxn];
int n,c;
bool cmp1(stu a,stu b){
return a.id < b.id;
}
bool cmp2(stu a,stu b){
if(a.name != b.name){
return a.name < b.name;
}else{
return a.id < b.id;
}
}
bool cmp3(stu a,stu b){
if(a.grade != b.grade){
return a.grade < b.grade;
}else{
return a.id < b.id;
}
}
int main(){
scanf("%d %d",&n,&c);
int id,grade;
string name;
for(int i=0;i<n;i++){
cin>>id>>name>>grade;
stus[i] = stu(id,name,grade);
}
if(c==1){
sort(stus,stus+n,cmp1);
}else if(c==2){
sort(stus,stus+n,cmp2);
}else if(c==3){
sort(stus,stus+n,cmp3);
}
for(int i=0;i<n;i++){
printf("%06d",stus[i].id);
cout<<" "<<stus[i].name;
printf(" %d\n",stus[i].grade);
}
return 0;
}
码后反思
- 加油💪