题目链接:传送门
思路:使用stl中的sort直接排序即可。
代码:
#include <bits/stdc++.h>
using namespace std;
const int maxn = 1e5 + 5;
struct node {
string id , name;
int grade;
}a[maxn];
bool cmp1(node b , node c) {
return b.id < c.id;
}
bool cmp2(node b , node c) {
return b.name < c.name || (b.name == c.name && b.id < c.id);
}
bool cmp3(node b , node c) {
return b.grade < c.grade || (b.grade == c.grade && b.id < c.id);
}
int main() {
int n , c;
scanf("%d %d" , &n , &c);
for(int i = 0 ; i < n ; i++) {
cin >> a[i].id >> a[i].name >> a[i].grade;
}
if(c == 1) sort(a , a + n , cmp1);
else if(c == 2) sort(a , a + n , cmp2);
else sort(a , a + n , cmp3);
for(int i = 0 ; i < n ; i++) {
if(i > 0)cout << "\n";
cout << a[i].id << " " << a[i].name << " " << a[i].grade;
}
return 0;
}