PAT 1028. List Sorting (25)

http://www.patest.cn/contests/pat-a-practise/1028

 1 #include<cstdio>
 2 #include<cstring>
 3 #include<algorithm>
 4 
 5 using namespace std;
 6 
 7 const int MAXN = 100;
 8 int C;
 9 
10 struct Student {
11     int id;
12     char name[MAXN];
13     int grade;
14 
15 }student[100000 + 10];
16 
17 bool cmp(const Student &a, const Student &b) {
18     if (C == 2) {
19         int x = strcmp(a.name, b.name);
20         if (x != 0) return x < 0;
21     } else if (C == 3) {
22         if (a.grade != b.grade) {
23             return a.grade < b.grade;
24         }
25     }
26     return a.id < b.id;
27 }
28 
29 int main() {
30     int n;
31     scanf("%d%d", &n, &C);
32     for (int i = 0; i < n; ++i) {
33         scanf("%d %s %d", &student[i].id, student[i].name, &student[i].grade);
34     }
35     sort(student, student + n, cmp);
36     for (int i = 0; i < n; ++i) {
37         printf("%06d %s %d\n", student[i].id, student[i].name, student[i].grade);
38     }
39     return 0;
40 }

 

posted @ 2015-08-04 23:47  ACSeed  Views(139)  Comments(0)    收藏  举报