最后一组数据使用cout输出超时。
#include<iostream>
#include<stdio.h>
#include<algorithm>
#include<string>
using namespace std;
struct student {
int id;
string name;
int grade;
};
bool comp1(student s1, student s2);
bool comp2(student s1, student s2);
bool comp3(student s1, student s2);
int main() {
int n, c;
cin >> n >> c;
student *stu = new student[n];
for (int i = 0; i < n; ++i) {
cin >> stu[i].id >> stu[i].name >> stu[i].grade;
}
switch (c) {
case 1: sort(stu, stu + n, comp1); break;
case 2: sort(stu, stu + n, comp2); break;
case 3: sort(stu, stu + n, comp3); break;
}
for (int i = 0; i < n; ++i) {
printf("%06d %s %d\n", stu[i].id,stu[i].name.c_str(), stu[i].grade);
}
return 0;
}
bool comp1(student s1, student s2){
return s1.id < s2.id;
}
bool comp2(student s1, student s2) {
if (s1.name != s2.name) {
return s1.name < s2.name;
}
else return s1.id < s2.id;
}
bool comp3(student s1, student s2) {
if (s1.grade != s2.grade) {
return s1.grade < s2.grade;
}
else return s1.id < s2.id;
}