PAT A1028 List Sorting
思路:根据输出的三种 C 的取值编写三个排序 bool 函数即可。
#include<iostream>
#include<string>
#include<algorithm>
using namespace std;
const int MAXN = 100005;
typedef struct {
int id, score;
string name;
} Student;
Student stu[MAXN];
int N, C;
bool cmp1(Student a, Student b) {
return a.id < b.id;
}
bool cmp2(Student a, Student b) {
if(a.name != b.name) return a.name < b.name;
return a.id < b.id;
}
bool cmp3(Student a, Student b) {
if(a.score != b.score) return a.score < b.score;
return a.id < b.id;
}
int main() {
cin >> N >> C;
for(int i = 0; i < N; i++)
cin >> stu[i].id >> stu[i].name >> stu[i].score;
if(C == 1) sort(stu, stu + N, cmp1);
else if(C == 2) sort(stu, stu + N, cmp2);
else if(C == 3) sort(stu, stu + N, cmp3);
for(int i = 0; i < N; i++) {
printf("%06d ", stu[i].id);
cout << stu[i].name << " " << stu[i].score << endl;
}
return 0;
}