vjudge地址:
http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=25979
代码:
#include "stdio.h"
#include "iostream"
#include "algorithm"
#include "string.h"
using namespace std;
int l,t,n,nl=0,nr=0,nf=0,q[10010];
struct ant
{
int m;
int w;
int o;
}a[10010];
bool cmp1(struct ant a1,struct ant a2)
{
return (a1.m)<(a2.m);
}
bool cmp2(struct ant a1,struct ant a2)
{
return (a1.o)<(a2.o);
}
int main()
{
int T;
scanf("%d",&T);
for(int j=1;j<=T;j++)
{
a[0].m=-1;
scanf("%d%d%d",&l,&t,&n);
char s;
int x;
for(int i=1;i<=n;i++)
{
scanf("%d %c",&x,&s);
if(s=='L')
{
a[i].m=x;
a[i].w=-1;
a[i].o=i;
}
else
{
a[i].m=x;
a[i].w=1;
a[i].o=i;
}
}
sort(a+1,a+n+1,cmp1);
for(int i=1;i<=n;i++)
{
q[i]=a[i].o;
if(a[i].w>0)
a[i].m+=t;
else
a[i].m-=t;
}
sort(a+1,a+n+1,cmp1);
for(int i=1;i<=n;i++)
{
a[i].o=q[i];
if(a[i].m==a[i-1].m)
a[i-1].w=a[i].w=0;
}
sort(a+1,a+n+1,cmp2);
printf("Case #%d:\n",j);
for(int i=1;i<=n;i++)
{
if(a[i].m<0||a[i].m>l)
printf("Fell off\n");
else
{
printf("%d ",a[i].m);
if(a[i].w==-1)
printf("L\n");
else if(a[i].w)
printf("R\n");
else
printf("Turning\n");
}
}
printf("\n");
}
return 0;
}