Go to diff to previous submission
#include <cstdio> //~ #include <math.h> int pole[102][102]; int velX,velY,startX,startY,cilX,cilY; int max (int a, int b){ return (a>b)?a:b; } int abs (int a){ return (a<0)? -a : a; } int vzdalenost(int X,int Y) { X=abs(cilX-X); Y=abs(cilY-Y); return max(X,Y); } int best; void rekurze(int X,int Y, int N) { //~ printf ("---- %d %d\n",X,Y); if (X<1||Y<1||X>velX||Y>velY) return; if (X == cilX && Y == cilY) {if (best==-1 || best > N) best = N;} else { rekurze(X+2,Y-1,N+1); rekurze(X+2,Y+1,N+1); rekurze(X+1,Y+2,N+1); rekurze(X-1,Y+2,N+1); } } int main() { //~ int velX,velY,startX,startY,cilX,cilY; while (scanf("%d%d%d%d%d%d",&velX,&velY,&startX,&startY,&cilX,&cilY)==6) { int best = -1; rekurze(startX,startY,0); if (best==-1) printf("impossible\n"); else printf("%d\n",best); } }