Source code for submission s1363

Go to diff to previous submission

grasshop.cpp

  1. #include <cstdio>
  2. //~ #include <math.h>
  3.  
  4. int pole[102][102];
  5.  
  6. int velX,velY,startX,startY,cilX,cilY;
  7.  
  8. int max (int a, int b){ return (a>b)?a:b; }
  9. int abs (int a){ return (a<0)? -a : a; }
  10.  
  11. int vzdalenost(int X,int Y)
  12. {
  13. X=abs(cilX-X);
  14. Y=abs(cilY-Y);
  15. return max(X,Y);
  16. }
  17.  
  18. void rekurze(int X,int Y,int N)
  19. {
  20. //~ printf ("---- %d %d\n",X,Y);
  21. if (X<1||Y<1||X>velX||Y>velY) return;
  22. if (pole[X][Y]==-1 || pole[X][Y]>N) pole[X][Y]=N;
  23. else return;
  24. if (vzdalenost(X,Y)>2)
  25. {
  26. if (cilX>X)
  27. {
  28. rekurze(X+2,Y-1,N+1);
  29. rekurze(X+2,Y+1,N+1);
  30. }
  31. else
  32. {
  33. rekurze(X-2,Y-1,N+1);
  34. rekurze(X-2,Y+1,N+1);
  35. }
  36. if (cilY>Y)
  37. {
  38. rekurze(X-1,Y+2,N+1);
  39. rekurze(X+1,Y+2,N+1);
  40. }
  41. else
  42. {
  43. rekurze(X-1,Y-2,N+1);
  44. rekurze(X+1,Y-2,N+1);
  45. }
  46. }
  47. else
  48. {
  49. rekurze(X+2,Y-1,N+1);
  50. rekurze(X+2,Y+1,N+1);
  51.  
  52. rekurze(X-2,Y-1,N+1);
  53. rekurze(X-2,Y+1,N+1);
  54.  
  55. rekurze(X+1,Y+2,N+1);
  56. rekurze(X-1,Y+2,N+1);
  57.  
  58. rekurze(X+1,Y-2,N+1);
  59. rekurze(X-1,Y-2,N+1);
  60. }
  61. }
  62.  
  63.  
  64. int main()
  65. {
  66. //~ int velX,velY,startX,startY,cilX,cilY;
  67. while (scanf("%d%d%d%d%d%d",&velX,&velY,&startX,&startY,&cilX,&cilY)==6)
  68. {
  69. for (int i=1;i<=velX;i++)
  70. for (int j=1;j<=velY;j++)
  71. pole[i][j]=-1;
  72.  
  73. rekurze(startX,startY,0);
  74. if (pole[cilX][cilY]==-1) printf("impossible\n");
  75. else printf("%d\n",pole[cilX][cilY]);
  76. }
  77.  
  78. }
  79.  

Diff to submission s1323

grasshop.cpp

--- c4.s1323.cteam039.grasshop.cpp.0.grasshop.cpp
+++ c4.s1363.cteam039.grasshop.cpp.0.grasshop.cpp
@@ -22,7 +22,6 @@
         if (pole[X][Y]==-1 || pole[X][Y]>N) pole[X][Y]=N;
         else return;
-        if (vzdalenost(X,Y)>3)
+        if (vzdalenost(X,Y)>2)
         {
-                
                 if (cilX>X)
                 {