#include <iostream>
#include <algorithm>
#include <cstdio>
using namespace std;
const int maxn = 100000 + 10;
const char name[][10]={"L", "Turning", "R" };
struct ant{
int id;
int pos;
int dir;
bool operator<(const ant &a) const{
return pos < a.pos;
}
}before[maxn], after[maxn];
struct out{
int id;
int pos;
int dir;
bool operator<(const out &a) const{
return id < a.id;
}
};
int main(void)
{
int K;
scanf("%d", &K);
for(int i = 1; i <= K; i++){ //step every case
int L, T, n;
printf("Case #%d:\n", i);
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 == 'R'? 1:-1 );
before[i] = (ant){i, p, d};
after[i] = (ant){0, p + T*d, d};
}
sort(before, before + n);
sort(after, after + n);
for(int i = 0; i < n; i++){
after[i].id = before[i].id; //reset id for after
}
for(int i = 0; i < n - 1; i++){
(after[i].pos == after[i + 1].pos) && (after[i].dir = after[i+1].dir = 0);
}
out *ptr = (out *)after;
sort(ptr, ptr + n);
for(int i = 0; i < n; i++){
if(ptr[i].pos < 0|| ptr[i].pos > L){
printf("Fell off\n");
}
else{
printf("%d %s\n", ptr[i].pos, name[ptr[i].dir + 1]);
}
}
printf("\n");
}
return 0;
}
uva 10881
最新推荐文章于 2022-10-08 07:46:03 发布