终于遇到一道水题,泪流满面
然而一开始name数组设为8少了一个,浪费了10分钟。。。
#include <cstdio>
#include <algorithm>
#include <cstring>
using namespace std;
typedef struct node
{
int id;
char name[9];
int grade;
}record;
bool cmp1(record a,record b)
{
if(a.id != b.id)
return a.id < b.id;
}
bool cmp2(record a,record b)
{
if(strcmp(a.name,b.name) > 0)
return strcmp(a.name,b.name) <= 0;
else
return a.id < b.id;
}
bool cmp3(record a,record b)
{
if(a.grade > b.grade)
return a.grade <= b.grade;
else
return a.id<b.id;
}
int main()
{
record s[100000];
int n,c;
scanf("%d %d",&n,&c);
for(int i =0;i<n;i++)
{
scanf("%d %s %d",&s[i].id,s[i].name,&s[i].grade);
}
switch(c)
{
case 1:
sort(s,s+n,cmp1);
break;
case 2:
sort(s,s+n,cmp2);
break;
case 3:
sort(s,s+n,cmp3);
break;
}
for(int i =0;i<n;i++)
{
printf("%06d %s %d\n",s[i].id,s[i].name,s[i].grade);
}
return 0;
}
在这里插入代码片