Source code for submission s1176

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>velX) return;
  22. if (pole[X][Y]==-1 || pole[X][Y]>N) pole[X][Y]=N;
  23. else return;
  24. if (vzdalenost(X,Y)>3)
  25. {
  26.  
  27. if (cilX>X)
  28. {
  29. rekurze(X+2,Y-1,N+1);
  30. rekurze(X+2,Y+1,N+1);
  31. }
  32. else
  33. {
  34. rekurze(X-2,Y-1,N+1);
  35. rekurze(X-2,Y+1,N+1);
  36. }
  37. if (cilY>Y)
  38. {
  39. rekurze(X-1,Y+2,N+1);
  40. rekurze(X+1,Y+2,N+1);
  41. }
  42. else
  43. {
  44. rekurze(X-1,Y-2,N+1);
  45. rekurze(X+1,Y-2,N+1);
  46. }
  47. }
  48. else
  49. {
  50. rekurze(X+2,Y-1,N+1);
  51. rekurze(X+2,Y+1,N+1);
  52.  
  53. rekurze(X-2,Y-1,N+1);
  54. rekurze(X-2,Y+1,N+1);
  55.  
  56. rekurze(X+1,Y+2,N+1);
  57. rekurze(X-1,Y+2,N+1);
  58.  
  59. rekurze(X+1,Y-2,N+1);
  60. rekurze(X-1,Y-2,N+1);
  61. }
  62. }
  63.  
  64.  
  65. int main()
  66. {
  67. //~ int velX,velY,startX,startY,cilX,cilY;
  68. while (scanf("%d%d%d%d%d%d",&velX,&velY,&startX,&startY,&cilX,&cilY)==6)
  69. {
  70. for (int i=1;i<=velX;i++)
  71. for (int j=1;j<=velY;j++)
  72. pole[i][j]=-1;
  73.  
  74. rekurze(startX,startY,0);
  75. if (pole[cilX][cilY]==-1) printf("impossible\n");
  76. else printf("%d\n",pole[cilX][cilY]);
  77. }
  78.  
  79. }
  80.  

Diff to submission s1170

grasshop.cpp

--- c4.s1170.cteam039.grasshop.cpp.0.grasshop.cpp
+++ c4.s1176.cteam039.grasshop.cpp.0.grasshop.cpp
@@ -22,5 +22,5 @@
         if (pole[X][Y]==-1 || pole[X][Y]>N) pole[X][Y]=N;
         else return;
-        if (vzdalenost(X,Y)>4)
+        if (vzdalenost(X,Y)>3)
         {