九度OnlineJudge之1023:EXCEL排序
题目描述: #include <cstdio>#include <string>#include <vector>#include <algorithm>using namespace std;struct Student{ string id; string name; int grade; };bool compare1(Student a,Student b){return a.id<b.id; }bool compare2(Student a,Student b){ if(a.name!=b.name) return a.name<b.name; else return a.id<b.id; }bool compare3(Student a,Student b){ if(a.grade!=b.grade) return a.grade<b.grade; else return a.id<b.id; }int main(){ int N,C; char Id[10]; char Name[10]; vector<Student> vec; int k=1; while(scanf("%d",&N)!=EOF) { vec.clear(); if(N==0) break; scanf("%d",&C); for(int i=1;i<=N;++i) { Student S; scanf("%s%s%d",Id,Name,&(S.grade)); S.id.assign(Id); S.name.assign(Name); vec.push_back(S); } if(C==1) sort(vec.begin(),vec.end(),compare1); if(C==2) sort(vec.begin(),vec.end(),compare2); if(C==3) sort(vec.begin(),vec.end(),compare3); printf("Case %d:\n",k); ++k; for(vector<Student>::iterator it=vec.begin();it!=vec.end();++it) printf("%s %s %d\n",(it->id).c_str(),(it->name).c_str(),it->grade); } //system("PAUSE"); return 0;}