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 }

浙公网安备 33010602011771号