数据比较大 需要换用scanf 和 printf
#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
struct Node{
int id;
string name;
char n[10];
int grade;
};
vector <Node> list;
int N, Rank;
bool cmp1(Node n1, Node n2) {
return n1.id < n2.id;
}
bool cmp2(Node n1, Node n2) {
if( n1.name != n2.name)
return n1.name < n2.name;
else
return n1.id < n2.id;
}
bool cmp3(Node n1, Node n2) {
if(n1.grade != n2.grade)
return n1.grade < n2.grade;
else
return n1.id < n2.id;
}
int main() {
cin >> N >> Rank;
ios_base::sync_with_stdio(false);
for (int i = 0; i < N;i++) {
Node temp;
scanf("%d %s %d", &temp.id, temp.n, &temp.grade);
// cin >> temp.id >> temp.name >> temp.grade;
// cout << temp.n << endl;
temp.name = temp.n;
// cout << temp.name << endl;
list.push_back(temp);
}
switch (Rank)
{
case 1:sort(&list[0], &list[0] + N, cmp1); break;
case 2:sort(&list[0], &list[0] + N, cmp2); break;
case 3:sort(&list[0], &list[0] + N, cmp3); break;
default:
break;
}
for (int i = 0; i < N; i++) {
printf("%06d %s %d\n", list[i].id, list[i].n, list[i].grade);
}
system("pause");
return 0;
}