没难度上代码。
#include <bits/stdc++.h>
using namespace std;
struct node {
int id, g;
string name;
};
bool cmp1 (node a, node b) {
return a.id < b.id;
}
bool cmp2 (node a, node b) {
if (a.name != b.name) return a.name < b.name;
else return a.id < b.id;
}
bool cmp3 (node a, node b) {
if (a.g != b.g) return a.g < b.g;
else return a.id < b.id;
}
vector<node> v;
int main() {
int n, m, g, id;
string name;
scanf ("%d %d", &n, &m);
for (int i = 0; i < n; i++) {
cin >> id >> name >> g;
v.push_back(node{id, g, name});
}
if (m == 1) sort (v.begin(), v.end(), cmp1);
if (m == 2) sort (v.begin(), v.end(), cmp2);
if (m == 3) sort (v.begin(), v.end(), cmp3);
for (int i = 0; i < v.size(); i++) {
printf ("%06d %s %d\n", v[i].id, v[i].name.c_str(), v[i].g);
}
}