记录编号 88444 评测结果 AAAAAAAAAA
题目名称 [UVa 10881] 蚂蚁 最终得分 100
用户昵称 GravatarOIdiot 是否通过 通过
代码语言 C++ 运行时间 0.171 s
提交时间 2014-02-20 22:29:24 内存使用 0.56 MiB
显示代码纯文本
#include <cstdio>
#include <algorithm>

using namespace std;

const int MAXN=10005;

struct Ant{
	int id;
	int p;
	int d;
	bool operator < (const Ant& a) const{
		return p < a.p;
	}
}before[MAXN],after[MAXN];

const char dirName[][10]={"L","Turning","R"};

int order[MAXN];

int main()
{
	freopen("Ants.in","r",stdin);
	freopen("Ants.out","w",stdout);
	int K;
	scanf("%d",&K);
	for(int kase=1;kase<=K;kase++)
	{
		int T,L,n;
		printf("Case #%d:\n",kase);
		scanf("%d%d%d",&L,&T,&n);
		for(int i=0;i<n;i++)
		{
			int p,d;
			char c;
			scanf("%d %c",&p,&c);
			d=(c=='L' ? -1 : 1);
			before[i]=(Ant){i,p,d};
			after[i]=(Ant){0,p+T*d,d};
		}
		
		sort(before,before+n);
		for(int i=0;i<n;i++)
			order[before[i].id]=i;
			
		sort(after,after+n);
		for(int i=0;i<n-1;i++)
			if(after[i].p==after[i+1].p)
				after[i].d=after[i+1].d=0;
				
		for(int i=0;i<n;i++)
		{
			int a=order[i];
			if(after[a].p<0 || after[a].p>L)
				printf("Fell off\n");
			else
				printf("%d %s\n",after[a].p,dirName[after[a].d+1]);
		}
		printf("\n");
	}
	return 0;
}