PAT 1028 List Sorting (25)
#include<iostream>
#include<cstdio>
#include<string>
#include<cstring>
#include<queue>
#include<vector>
#include<cmath>
#include<iomanip>
#include<algorithm>
using namespace std;
struct Student
{
char stu_id[15];
char strName[15];
int score;
};
Student arrStu[100000+5];
int C;
bool greaterMark(const Student &stu1, const Student &stu2)
{
if(C == 1)
{
return strcmp(stu1.stu_id,stu2.stu_id)<0;
}
else if(C == 2)
{
if(strcmp(stu1.strName,stu2.strName) != 0)
return strcmp(stu1.strName,stu2.strName) < 0;
else
return strcmp(stu1.stu_id,stu2.stu_id) < 0;
}
else if(C == 3)
{
if(stu1.score != stu2.score)
return stu1.score < stu2.score;
else
return strcmp(stu1.stu_id,stu2.stu_id) < 0;
}
}
void optput(int N)
{
for(int i=0; i<N; i++)
cout<<arrStu[i].stu_id<<" "<<arrStu[i].strName<<" "<<arrStu[i].score<<endl;
}
int main()
{
int N;
scanf("%d %d",&N,&C);
Student stu;
for(int i=0; i<N; i++)
{
scanf("%s",arrStu[i].stu_id);
scanf("%s",arrStu[i].strName);
scanf("%d",&arrStu[i].score);
}
sort(arrStu,arrStu + N, greaterMark);
optput(N);
return 0;
}
多学习,多总结。

浙公网安备 33010602011771号