几个月前做的,再做了一遍,
#include<bits/stdc++.h>
#define maxn 10010
using namespace std;
struct mayi
{
int id;
int pos;
int face;
bool operator < (const mayi& rhs) const
{
return pos<rhs.pos;
}
};
mayi MAYI[maxn];
int L,T,n;
int id[maxn];
int ans[maxn];
int zt[maxn];
int main()
{
int TT;
scanf("%d",&TT);
for(int t=1;t<=TT;t++)
{
scanf("%d %d %d",&L,&T,&n);
char c;
for(int i=1;i<=n;i++)
{
scanf("%d %c",&MAYI[i].pos,&c);
if(c=='R') MAYI[i].face=1;
else MAYI[i].face=-1;
MAYI[i].id=i;
}
sort(MAYI+1,MAYI+1+n);
for(int i=1;i<=n;i++)
{
id[i]=MAYI[i].id;
MAYI[i].pos+=MAYI[i].face*T;
}
sort(MAYI+1,MAYI+1+n);
for(int i=1;i<=n;i++)
{
ans[id[i]]=MAYI[i].pos;
if((i>1&&MAYI[i-1].pos==MAYI[i].pos)||(i<n&&MAYI[i+1].pos==MAYI[i].pos)) zt[id[i]]=0;
else zt[id[i]]=MAYI[i].face;
}
printf("Case #%d:\n",t);
for(int i=1;i<=n;i++)
{
if(ans[i]<0||ans[i]>L) puts("Fell off");
else
{
printf("%d ",ans[i]);
if(zt[i]==0) puts("Turning");
else if(zt[i]==1) puts("R");
else puts("L");
}
}
puts("");
}
return 0;
}