pat 1028 List Sorting

很簡單的一個題,但是一直卡在最後一個測試用例(運行超時)。

一開始是用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;
}



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章