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 |
No bale will be placed farther than 25 bale-widths from the first bale.int h[51][51][26]; //z, y , x struct Point{ int x,y,z; }bale[25001]; int main(){ int n,id,x,y,z,nx,ny,nz; char dir; int surface = 5; scanf("%d",&n); bale[1].z = 0, bale[1].x = 25, bale[1].y = 25; h[25][25][0] = 1; bool valid = true; for(int i=2;i<=n;i++){ scanf("%d %c",&id,&dir); if(!valid) continue; bale[i].x = bale[id].x, bale[i].y = bale[id].y, bale[i].z = bale[id].z; if(dir=='L'){ bale[i].x--; }else if(dir=='R'){ bale[i].x++; }else if(dir=='F'){ bale[i].y++; }else if(dir=='B'){ bale[i].y--; }else if(dir=='O'){ bale[i].z++; }else if(dir=='U'){ bale[i].z--; } x = bale[i].x , y = bale[i].y, z = bale[i].z; if(h[x][y][z]) valid = false; else{ h[x][y][z] = 1; surface += 6; if(z==0) surface --; if(z>0 && h[x][y][z-1]) surface-=2; if(z<25 && h[x][y][z+1]) surface-=2; if(x>0 && h[x-1][y][z]) surface-=2; if(x<50 && h[x+1][y][z]) surface-=2; if(y>0 && h[x][y-1][z]) surface-=2; if(y<50 && h[x][y+1][z]) surface-=2; } //printf("i = %d surface = %d\n",i,surface); } if(!valid) printf("-1\n"); else printf("%d\n",surface); return 0; } Followed by: Post your reply here: |
All Rights Reserved 2003-2013 Ying Fuchen,Xu Pengcheng,Xie Di
Any problem, Please Contact Administrator