Source code for submission s1066

grasshop.cpp

  1. #include <cstdio>
  2.  
  3. int pole[102][102];
  4.  
  5. int velX,velY,startX,startY,cilX,cilY;
  6.  
  7.  
  8. void rekurze(int X,int Y,int N)
  9. {
  10. //~ printf ("---- %d %d\n",X,Y);
  11. if (X<1||Y<1||X>velX||Y>velX) return;
  12. if (pole[X][Y]==-1 || pole[X][Y]>N) pole[X][Y]=N;
  13. else return;
  14. if (cilX>X)
  15. {
  16. rekurze(X+2,Y-1,N+1);
  17. rekurze(X+2,Y+1,N+1);
  18. }
  19. else
  20. {
  21. rekurze(X-2,Y-1,N+1);
  22. rekurze(X-2,Y+1,N+1);
  23. }
  24. if (cilY>Y)
  25. {
  26. rekurze(X-1,Y+2,N+1);
  27. rekurze(X+1,Y+2,N+1);
  28. }
  29. else
  30. {
  31. rekurze(X-1,Y-2,N+1);
  32. rekurze(X+1,Y-2,N+1);
  33. }
  34. }
  35.  
  36.  
  37. int main()
  38. {
  39. //~ int velX,velY,startX,startY,cilX,cilY;
  40. while (scanf("%d%d%d%d%d%d",&velX,&velY,&startX,&startY,&cilX,&cilY)==6)
  41. {
  42. for (int i=1;i<=velX;i++)
  43. for (int j=1;j<=velY;j++)
  44. pole[i][j]=-1;
  45.  
  46. rekurze(startX,startY,0);
  47. if (pole[cilX][cilY]==-1) printf("impossible\n");
  48. else printf("%d\n",pole[cilX][cilY]);
  49. }
  50.  
  51. }
  52.