List Sorting
注意这道题如果s数组设置为100001->运行超时,设置为99999->段错误,即最后一个测试点为100000个学生
解答:
#include<iostream>
#include<algorithm>
#include<cstdio>
using namespace std;
struct student{
string Name;
int Score,Id;
}s[100000];
bool comp1(student s1,student s2){
return s1.Id<s2.Id;
}
bool comp2(student s1,student s2){
return s1.Name==s2.Name ? s1.Id<s2.Id : s1.Name<s2.Name;
}
bool comp3(student s1,student s2){
return s1.Score==s2.Score ? s1.Id<s2.Id : s1.Score<s2.Score;
}
int main(){
int N,C;
cin>>N>>C;
for(int i=0;i<N;i++){
cin>>s[i].Id>>s[i].Name>>s[i].Score;
}
switch (C){
case 1:
sort(s,s+N,comp1);
break;
case 2:
sort(s,s+N,comp2);
break;
case 3:
sort(s,s+N,comp3);
break;
}
for(int i=0;i<N;i++) {
printf("%06d ",s[i].Id);
cout<<s[i].Name<<' '<<s[i].Score<<endl;
}
return 0;
}