记录编号 |
88444 |
评测结果 |
AAAAAAAAAA |
题目名称 |
[UVa 10881] 蚂蚁 |
最终得分 |
100 |
用户昵称 |
OIdiot |
是否通过 |
通过 |
代码语言 |
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;
}