很簡單的一個題,但是一直卡在最後一個測試用例(運行超時)。
一開始是用string類型來保存id和name的,看了網上別人的ac的代碼之後改成用char*來保存,排序也直接用數組而不是vector。但是仍然超時。
然後將cin和cout都改成scanf和printf,終於過了
#include <iostream>
#include <algorithm>
#include <string.h>
#include <stdio.h>
using namespace std;
struct Student{
char sid[7];
char name[9];
int score;
};
Student stu[100005];
bool cmp1(Student s1,Student s2)
{
return strcmp(s1.sid,s2.sid)<0;
}
bool cmp2(Student s1,Student s2)
{
return strcmp(s1.name,s2.name)==0?strcmp(s1.sid,s2.sid)<0:strcmp(s1.name,s2.name)<0;
}
bool cmp3(Student s1,Student s2)
{
return s1.score==s2.score?strcmp(s1.sid,s2.sid)<0:s1.score<s2.score;
}
int main()
{
freopen("E:/data/1028.txt","r",stdin);
int n,c;
scanf("%d%d",&n,&c);
for(int i=0;i<n;i++)
{
scanf("%s%s%d",stu[i].sid,stu[i].name,&stu[i].score);
}
switch (c)
{
case 1:
sort(stu,stu+n,cmp1);
break;
case 2:
sort(stu,stu+n,cmp2);
break;
case 3:
sort(stu,stu+n,cmp3);
break;
}
for(int i=0;i<n;i++)
printf("%s %s %d\n",stu[i].sid,stu[i].name,stu[i].score);
return 0;
}