1028 List Sorting (25 分)
声明为全局数组,不然会报错。
/*
N<=10^5 C
C=1 ID递增
C=2 name非递减
C=3 grade非递减
同样的名字或成绩,排序根据递增的ID
*/
#include <bits/stdc++.h>
using namespace std;
struct node {
int id;
string name;
int grade;
}stu[100001];
bool cmp1(node a, node b) {
return a.id<b.id;
}
bool cmp2(node a, node b) {
if (a.name!=b.name)
return a.name<b.name;
return a.id<b.id;
}
bool cmp3(node a, node b) {
if (a.grade!=b.grade)
return a.grade<b.grade;
else
return a.id<b.id;
}
int main() {
// freopen("datain.txt","r",stdin);
ios::sync_with_stdio(false);
// cin.tie(0);
// cout.tie(0);
int n, c;
cin>>n>>c;
for (int i = 0; i < n; i++) {
cin>>stu[i].id>>stu[i].name>>stu[i].grade;
}
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++) {
cout<<setw(6)<<setfill('0')<<stu[i].id<<" "<<stu[i].name<<" "<<stu[i].grade<<endl;
}
return 0;
}