Source code for submission s926

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. if(abs(x-posFx) < 5 && abs(y-posFy) < 5 )
  19. {
  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-2, y-1,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. check(x-1, y-2,jump+1);
  28. }
  29. else
  30. {
  31. if(x-posFx < 0)
  32. {
  33. if(y-posFy<0){
  34.  
  35. check(x+1, y+2,jump+1);
  36.  
  37. check(x+2, y+1,jump+1);}
  38. else{
  39.  
  40.  
  41. check(x+1, y-2,jump+1);
  42.  
  43. check(x+2, y-1,jump+1); }
  44. }
  45. else
  46. {
  47. if(y-posFy<0){
  48.  
  49. check(x-1, y+2,jump+1);
  50.  
  51. check(x-2, y+1,jump+1); }
  52. else{
  53.  
  54.  
  55. check(x-1, y-2,jump+1);
  56.  
  57. check(x-2, y-1,jump+1); }
  58. }
  59. }
  60. }
  61. }
  62.  
  63. }
  64.  
  65.  
  66. int main(void)
  67. {
  68.  
  69. while(scanf("%d %d %d %d %d %d", &sizex, &sizey, &posSx, &posSy, &posFx, &posFy) == 6)
  70. {
  71. for(int i = 0; i<sizex; i++)
  72. for(int j = 0; j<sizey; j++)
  73. pole[i][j] = 1000;
  74.  
  75. check(posSx-1, posSy-1, 0);
  76.  
  77.  
  78. /*for(int i = 0; i<sizex; i++)
  79. {
  80. for(int j = 0; j<sizey; j++)
  81. printf("%d", pole[i][j]);
  82. printf("\n");
  83. }*/
  84.  
  85.  
  86. if(pole[posFx-1][posFy-1]==1000)
  87. printf("impossible\n");
  88. else
  89. printf("%d\n", pole[posFx-1][posFy-1]);
  90. }
  91.  
  92. return 0;
  93.  
  94. }
  95.  

Diff to submission s859

grassshop.cpp

--- c4.s859.cteam107.grasshop.cpp.0.grassshop.cpp
+++ c4.s926.cteam107.grasshop.cpp.0.grassshop.cpp
@@ -14,7 +14,7 @@
         {
                 if(pole[x][y]>jump)
-{               
+                {               
                         pole[x][y] = jump;
-                        if(abs(x-posFx) < 4 && abs(y-posFy) < 4 )
+                        if(abs(x-posFx) < 5 && abs(y-posFy) < 5 )
                         {
                                 check(x+2, y+1,jump+1);
@@ -31,29 +31,29 @@
                                 if(x-posFx < 0)
                                 {
-                                        if(y-posFy<0)
-                                                if(abs(x-posFx) < abs(y-posFy))
+                                        if(y-posFy<0){
+                                                
                                                         check(x+1, y+2,jump+1);
-                                                else
-                                                        check(x+2, y+1,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); 
+                                                
+                                                        check(x+2, y-1,jump+1); }
                                 }
                                 else
                                 {
-                                        if(y-posFy<0)
-                                                if(abs(x-posFx) < abs(y-posFy))
+                                        if(y-posFy<0){
+                                                
                                                         check(x-1, y+2,jump+1);
-                                                else
-                                                        check(x-2, y+1,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); 
+                                                
+                                                        check(x-2, y-1,jump+1); }
                                 }
                         }