Go to diff to previous submission
#include <stdlib.h> #include <stdio.h> int pole[100][100]; int posSx, posSy; int posFx, posFy; int sizex, sizey; void check(int x, int y, int jump) { if(jump > sizex * 3/2 && jump > sizey * 3/2) return; if(x > -1 && y > -1 && x < sizex && y < sizey) { if(pole[x][y]>jump) { 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); check(x-2, y+1,jump+1); check(x-2, y-1,jump+1); check(x+1, y+2,jump+1); check(x+1, y-2,jump+1); 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); } } } } } int main(void) { while(scanf("%d %d %d %d %d %d", &sizex, &sizey, &posSx, &posSy, &posFx, &posFy) == 6) { for(int i = 0; i<sizex; i++) for(int j = 0; j<sizey; j++) pole[i][j] = 1000; check(posSx-1, posSy-1, 0); /*for(int i = 0; i<sizex; i++) { for(int j = 0; j<sizey; j++) printf("%d", pole[i][j]); printf("\n"); }*/ if(pole[posFx-1][posFy-1]==1000) printf("impossible\n"); else printf("%d\n", pole[posFx-1][posFy-1]); } return 0; }
--- c4.s926.cteam107.grasshop.cpp.0.grassshop.cpp +++ c4.s1188.cteam107.grasshop.cpp.0.grassshop.cpp @@ -14,7 +14,7 @@ { if(pole[x][y]>jump) - { +{ pole[x][y] = jump; - if(abs(x-posFx) < 5 && abs(y-posFy) < 5 ) + if(abs(x-posFx) < 8 && abs(y-posFy) < 8 ) { check(x+2, y+1,jump+1); @@ -31,29 +31,29 @@ if(x-posFx < 0) { - if(y-posFy<0){ - + if(y-posFy<0) + if(abs(x-posFx) < abs(y-posFy)) check(x+1, y+2,jump+1); - - check(x+2, y+1,jump+1);} - else{ + else + check(x+2, y+1,jump+1); + else - + if(abs(x-posFx) < abs(y-posFy)) check(x+1, y-2,jump+1); - - check(x+2, y-1,jump+1); } + else + check(x+2, y-1,jump+1); } else { - if(y-posFy<0){ - + if(y-posFy<0) + if(abs(x-posFx) < abs(y-posFy)) check(x-1, y+2,jump+1); - - check(x-2, y+1,jump+1); } - else{ + else + check(x-2, y+1,jump+1); + else - + if(abs(x-posFx) < abs(y-posFy)) check(x-1, y-2,jump+1); - - check(x-2, y-1,jump+1); } + else + check(x-2, y-1,jump+1); } }