【PAT甲级】1028 List Sorting (25 分)

题意:

输入一个正整数N(<=100000)和C(C属于{1,2,3}),接下来输入N行,每行包括学生的六位学号(习惯用string输入,因为可能有前导零),名字和成绩(正整数)。输出排序后的信息,排序根据C决定。

AAAAAccepted code:

 1 #define HAVE_STRUCT_TIMESPEC
 2 #include<bits/stdc++.h>
 3 using namespace std;
 4 typedef struct student{
 5     string id,name;
 6     int grade;
 7 };
 8 student s[100007];
 9 bool cmp(student a,student b){
10     return a.id<b.id;
11 }
12 bool cmp2(student a,student b){
13     if(a.name!=b.name)
14         return a.name<b.name;
15     return a.id<b.id;
16 }
17 bool cmp3(student a,student b){
18     if(a.grade!=b.grade)
19         return a.grade<b.grade;
20     return a.id<b.id;
21 }
22 int main(){
23     int n,c;
24     cin>>n>>c;
25     for(int i=1;i<=n;++i)
26         cin>>s[i].id>>s[i].name>>s[i].grade;
27     if(c==1)
28         sort(s+1,s+1+n,cmp);
29     else if(c==2)
30         sort(s+1,s+1+n,cmp2);
31     else if(c==3)
32         sort(s+1,s+1+n,cmp3);
33     for(int i=1;i<=n;++i){
34         cout<<s[i].id<<" "<<s[i].name<<" "<<s[i].grade;
35         cout<<((i==n)?"":"
");
36     }
37     return 0;
38 }
保持热爱 不懈努力 不试试看怎么知道会失败呢(划掉) 世上无难事 只要肯放弃(划掉)
原文地址:https://www.cnblogs.com/ldudxy/p/11481964.html