| ||||||||||
| Online Judge | Problem Set | Authors | Online Contests | User | ||||||
|---|---|---|---|---|---|---|---|---|---|---|
| Web Board Home Page F.A.Qs Statistical Charts | Current Contest Past Contests Scheduled Contests Award Contest | |||||||||
半小时,,一次AC,,哇哦,,贴代码留恋#include <iostream>
#include <cstdio>
#include <cstring>
using namespace std;
struct Robt{
int x,y;
char o;
}robt[105]; //i号robt的位置以及变化来的状态
int A,B,n,m;
char W = 'W', E = 'E', N = 'N', S = 'S';
int main(){
int T;
scanf("%d",&T);
while(T--){
scanf("%d%d%d%d",&A,&B,&n,&m);
int flag = 0; //1表示出界,2表示相撞,0表示OK
int ansrobt, ansrobt2;
int g[105][105];
memset(g, 0, sizeof(g));
for(int i = 1; i<=n; i++){
int a,b;
char c;
cin>>a>>b>>c;
robt[i].x = a;
robt[i].y = b;
if(c == W) robt[i].o = E;
else if(c == E) robt[i].o = W;
if(c == N) robt[i].o = S;
if(c == S) robt[i].o = N;
g[a][b] = i;
}
for(int j = 0; j<m; j++){
int num,rep;
char c;
cin>>num>>c>>rep;
if(flag) continue;
if(c == 'F'){
g[robt[num].x][robt[num].y] = 0;
char ch = robt[num].o;
for(int k = 0; k<rep; k++){
if(ch == W) robt[num].x += 1;
if(ch == E) robt[num].x -= 1;
if(ch == N) robt[num].y -= 1;
if(ch == S) robt[num].y += 1;
if(g[robt[num].x][robt[num].y]){
ansrobt = num;
ansrobt2 = g[robt[num].x][robt[num].y];
flag = 2;
break;
}
if(robt[num].x == 0 || robt[num].x == A+1 || robt[num].y == 0 || robt[num].y == B+1){
ansrobt = num;
flag = 1;
break;
}
}
g[robt[num].x][robt[num].y] = num;
}
if(c == 'L'){
char ch = robt[num].o;
if(rep%4 == 1){
if(ch == W) robt[num].o = S;
if(ch == E) robt[num].o = N;
if(ch == N) robt[num].o = W;
if(ch == S) robt[num].o = E;
}
if(rep%4 == 2){
if(ch == W) robt[num].o = E;
if(ch == E) robt[num].o = W;
if(ch == N) robt[num].o = S;
if(ch == S) robt[num].o = N;
}
if(rep%4 == 3){
if(ch == W) robt[num].o = N;
if(ch == E) robt[num].o = S;
if(ch == N) robt[num].o = E;
if(ch == S) robt[num].o = W;
}
}
if(c == 'R'){
char ch = robt[num].o;
if(rep%4 == 1){
if(ch == W) robt[num].o = N;
if(ch == E) robt[num].o = S;
if(ch == N) robt[num].o = E;
if(ch == S) robt[num].o = W;
}
if(rep%4 == 2){
if(ch == W) robt[num].o = E;
if(ch == E) robt[num].o = W;
if(ch == N) robt[num].o = S;
if(ch == S) robt[num].o = N;
}
if(rep%4 == 3){
if(ch == W) robt[num].o = S;
if(ch == E) robt[num].o = N;
if(ch == N) robt[num].o = W;
if(ch == S) robt[num].o = E;
}
}
}
switch(flag){
case 0: printf("OK\n");break;
case 1: printf("Robot %d crashes into the wall\n",ansrobt);break;
case 2: printf("Robot %d crashes into robot %d\n",ansrobt,ansrobt2);break;
}
}
return 0;
}
Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator