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 |
贴个垃圾代码#include<cstdio> #include<cstring> #define max(a,b) (a)>(b)?(a):(b) #define min(a,b) (a)<(b)?(a):(b) using namespace std; int a,b,n,m,t; int di[105][105][2]; bool mark[105][105]; char s[10]; struct node{ int x;int y; }T[105]; int main(){ int i,j,k,l; int flag=0,num1,num2; scanf("%d",&t); while(t--){ scanf("%d %d %d %d",&a,&b,&n,&m); flag=0; memset(mark,false,sizeof(mark)); for(i=1;i<=n;i++){ scanf("%d %d %s",&j,&k,s); mark[j][k]=true; switch(s[0]){ case 'N':di[j][k][0]=0;break; case 'S':di[j][k][0]=2;break; case 'E':di[j][k][0]=3;break; case 'W':di[j][k][0]=1;break; } di[j][k][1]=i; T[i].x=j;T[i].y=k; } for(i=1;i<=m;i++){ scanf("%d %s %d",&j,s,&k); if(flag!=0) continue; num1=j; switch(s[0]){ case 'F': switch(di[T[j].x][T[j].y][0]){ case 0:if(T[j].y+k>b){ flag=1; } l=T[j].y+1; while(l<=(min(b,T[j].y+k))&&!mark[T[j].x][l]) l++; if(l<=(min(b,T[j].y+k))){ flag=2;num2=di[T[j].x][l][1]; break; } else if(flag==1) break; mark[T[j].x][T[j].y]=false; di[T[j].x][T[j].y+k][0]=di[T[j].x][T[j].y][0]; T[j].y+=k; mark[T[j].x][T[j].y]=true; di[T[j].x][T[j].y][1]=j; break; case 1:if(T[j].x-k<=0){ flag=1; } l=T[j].x-1; while(l>=(max(1,T[j].x-k))&&!mark[l][T[j].y]) l--; if(l>=(max(1,T[j].x-k))){ flag=2;num2=di[l][T[j].y][1]; break; } else if(flag==1) break; mark[T[j].x][T[j].y]=false; di[T[j].x-k][T[j].y][0]=di[T[j].x][T[j].y][0]; T[j].x-=k; mark[T[j].x][T[j].y]=true; di[T[j].x][T[j].y][1]=j; break; case 2:if(T[j].y-k<=0){ flag=1; } l=T[j].y-1; while(l>=(max(1,T[j].y-k))&&!mark[T[j].x][l]) l--; if(l>=(max(1,T[j].y-k))){ flag=2;num2=di[T[j].x][l][1]; break; } else if(flag==1) break; mark[T[j].x][T[j].y]=false; di[T[j].x][T[j].y-k][0]=di[T[j].x][T[j].y][0]; T[j].y-=k; mark[T[j].x][T[j].y]=true; di[T[j].x][T[j].y][1]=j; break; case 3:if(T[j].x+k>a){ flag=1; } l=T[j].x+1; while(l<=(min(a,T[j].x+k))&&!mark[l][T[j].y]) l++; if(l<=(min(a,T[j].x+k))){ flag=2;num2=di[l][T[j].y][1]; break; } else if(flag==1) break; mark[T[j].x][T[j].y]=false; di[T[j].x+k][T[j].y][0]=di[T[j].x][T[j].y][0]; T[j].x+=k; mark[T[j].x][T[j].y]=true; di[T[j].x][T[j].y][1]=j; break; } break; case 'L':k=k%4;for(l=1;l<=k;l++) di[T[j].x][T[j].y][0]=(di[T[j].x][T[j].y][0]+1)%4;break; case 'R':k=k%4;for(l=1;l<=k;l++) di[T[j].x][T[j].y][0]=(di[T[j].x][T[j].y][0]+3)%4;break; } } if(!flag) printf("OK\n"); else if(flag==1) printf("Robot %d crashes into the wall\n",num1); else printf("Robot %d crashes into robot %d\n",num1,num2); } return 0; } Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator