题解 | EXCEL排序
#include<iostream>
#include<vector>
#include<algorithm>
#include<cmath>
using namespace std;
#define pai 3.1415928
struct zx {
string id;
string name;
int score;
};
bool l1(zx x,zx y) {
return x.id<y.id;
}
bool l2(zx x,zx y) {
if(x.name==y.name)
return x.id<y.id;
else return x.name<y.name;
}
bool l3(zx x,zx y) {
if(x.score==y.score)
return x.id<y.id;
else
return x.score<y.score;
}
int main() {
int n,m;
while(cin>>n&&n!=0) {
cin>>m;
zx a[n];
for(int i=0; i<n; i++)
cin>>a[i].id>>a[i].name>>a[i].score;
cout<<"Case:"<<endl;
switch(m) {
case 1:
sort(a,a+n,l1);
for(int i=0; i<n; i++)
cout<<a[i].id<<" "<<a[i].name<<" "<<a[i].score<<endl;
break;
case 2:
sort(a,a+n,l2);
for(int i=0; i<n; i++)
cout<<a[i].id<<" "<<a[i].name<<" "<<a[i].score<<endl;
break;
case 3:
sort(a,a+n,l3);
for(int i=0; i<n; i++)
cout<<a[i].id<<" "<<a[i].name<<" "<<a[i].score<<endl;
break;
}
}
return 0;
}
规则排序

查看18道真题和解析