数据比较大 需要换用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;}
新闻热点
疑难解答