Source code for submission s1193

Go to diff to previous submission

grassshop.cpp

  1. #include <stdlib.h>
  2. #include <stdio.h>
  3.  
  4. int pole[100][100];
  5. int posSx, posSy;
  6. int posFx, posFy;
  7. int sizex, sizey;
  8.  
  9. void check(int x, int y, int jump)
  10. {
  11. if(jump > sizex * 3/2 && jump > sizey * 3/2)
  12. return;
  13. if(x > -1 && y > -1 && x < sizex && y < sizey)
  14. {
  15. if(pole[x][y]>jump)
  16. {
  17. pole[x][y] = jump;
  18.  
  19. check(x+2, y+1,jump+1);
  20. check(x+2, y-1,jump+1);
  21. check(x-2, y+1,jump+1);
  22. check(x-2, y-1,jump+1);
  23. check(x+1, y+2,jump+1);
  24. check(x+1, y-2,jump+1);
  25. check(x-1, y+2,jump+1);
  26. check(x-1, y-2,jump+1);
  27.  
  28.  
  29. }
  30. }
  31.  
  32. }
  33.  
  34.  
  35. int main(void)
  36. {
  37.  
  38. while(scanf("%d %d %d %d %d %d", &sizex, &sizey, &posSx, &posSy, &posFx, &posFy) == 6)
  39. {
  40. for(int i = 0; i<sizex; i++)
  41. for(int j = 0; j<sizey; j++)
  42. pole[i][j] = 1000;
  43.  
  44. check(posSx-1, posSy-1, 0);
  45.  
  46.  
  47. /*for(int i = 0; i<sizex; i++)
  48. {
  49. for(int j = 0; j<sizey; j++)
  50. printf("%d", pole[i][j]);
  51. printf("\n");
  52. }*/
  53.  
  54.  
  55. if(pole[posFx-1][posFy-1]==1000)
  56. printf("impossible\n");
  57. else
  58. printf("%d\n", pole[posFx-1][posFy-1]);
  59. }
  60.  
  61. return 0;
  62.  
  63. }
  64.  

Diff to submission s1188

grassshop.cpp

--- c4.s1188.cteam107.grasshop.cpp.0.grassshop.cpp
+++ c4.s1193.cteam107.grasshop.cpp.0.grassshop.cpp
@@ -16,6 +16,5 @@
 {               
                         pole[x][y] = jump;
-                        if(abs(x-posFx) < 8 && abs(y-posFy) < 8 )
-                        {
+                        
                                 check(x+2, y+1,jump+1);
                                 check(x+2, y-1,jump+1);
@@ -26,36 +25,6 @@
                                 check(x-1, y+2,jump+1);
                                 check(x-1, y-2,jump+1);
-                        }
-                        else
-                        {
-                                if(x-posFx < 0)
-                                {
-                                        if(y-posFy<0)
-                                                if(abs(x-posFx) < abs(y-posFy))
-                                                        check(x+1, y+2,jump+1);
-                                                else
-                                                        check(x+2, y+1,jump+1); 
-                                        else
-
-                                                if(abs(x-posFx) < abs(y-posFy))
-                                                        check(x+1, y-2,jump+1);
-                                                else
-                                                        check(x+2, y-1,jump+1); 
-                                }
-                                else
-                                {
-                                        if(y-posFy<0)
-                                                if(abs(x-posFx) < abs(y-posFy))
-                                                        check(x-1, y+2,jump+1);
-                                                else
-                                                        check(x-2, y+1,jump+1); 
-                                        else
-
-                                                if(abs(x-posFx) < abs(y-posFy))
-                                                        check(x-1, y-2,jump+1);
-                                                else
-                                                        check(x-2, y-1,jump+1); 
-                                }
-                        }
+                        
+                        
                 }
         }