题意:用sort排序即可
思路:数据量达到100000,用cin会超时。
#include <iostream>
#include <cstring>
#include <algorithm>
using namespace std;
struct Node
{
int num, score;
char name[9];
};
Node stud[100000];
int c;
bool cmp(Node s1, Node s2)
{
if(c == 1) return s1.num < s2.num;
if(c == 2)
{
int tmp = strcmp(s1.name, s2.name);
if(tmp == 0)
return s1.num < s2.num;
else
return tmp < 0;
}
else
{
if(s1.score == s2.score)
return s1.num < s2.num;
else
return s1.score < s2.score;
}
}
int main()
{
int n;
scanf("%d %d", &n, &c);
for(int i = 0; i < n; i++)
scanf("%d %s %d", &stud[i].num, &stud[i].name, &stud[i].score);
sort(stud, stud+n, cmp);
for(int i = 0; i < n; i++)
{
printf("%06d %s %d\n", stud[i].num, stud[i].name, stud[i].score);
}
return 0;
}