// ------------------------ // 無念(´・ω・`) // ------------------------ #include int map[1000][1000]; int w,h,n; int move(int x,int y){ int r=0; if (x==w-1 && y==h-1) return 0; if (x<0||y<0||w<=x||h<=y) return 0x80000000; //printf("%d %d %d\n",x,y,map[x][y]); if (map[x][y]&0b0001) r=move(x-1,y)+1; if (r>0) return r; if (map[x][y]&0b0010) r=move(x,y-1)+1; if (r>0) return r; if (map[x][y]&0b0100) r=move(x+1,y)+1; if (r>0) return r; if (map[x][y]&0b1000) r=move(x,y+1)+1; if (r>0) return r; return 0x80000000; } main(){ int i,j,k,m,x,y,f,t,vx,vy,v; int ada[1000]; scanf("%d%d%d",&w,&h,&n); for (x=0;x0){ if (t-f>=w){ vx=0;vy=1;v=8; }else{ vx=1;vy=0;v=4; } }else{ if (t-f<=-w){ vx=0;vy=-1;v=2; }else{ vx=-1;vy=0;v=1; } } //printf("%d\n",-1); while (1){ map[f%w][f/w]|=v; //printf("%d %d *%d\n",f,t,map[f%w][f/w]); f+=vx+vy*w; if (f!=t) break; } } } j=move(0,0); if (j<0) printf("Odekakedekinai..\n"); else printf("%d\n",j); return 0; }