#include #include int x,y,dir,step;/* top, right, bot, left */ int i,*startx, *starty, *endx, *endy; int fce(int inst) { x=0;y=0;dir=0;step=0; startx = malloc(inst*sizeof(int)); starty = malloc(inst*sizeof(int)); endy = malloc(inst*sizeof(int)); endx = malloc(inst*sizeof(int)); i = 0; for(i = 0; i 4 && starty[step-5] >= y && starty[step-5] <= y+in && startx[step-5] <= x && endx[step-5] >= x) || ( i > 2 && starty[step-3] >= y && starty[step-3] <= y+in && startx[step-3] <= x && endx[step-3] >= x)) { printf("%d\n", step); free(endx); free(endy); free(startx); free(starty); return inst-step-1; } startx[step] = x; starty[step] = y; endx[step] = x; endy[step] = y+in; y = y+in; } else if(dir == 1) { if((i > 4 && startx[i-5] >= x && startx[i-5] <= x+in && starty[i-5] <= y && endy[i-5] >= y) || (i > 2 &&startx[i-3] >= x && startx[i-3] <= x+in && starty[i-3] <= y && endy[i-3] >= y)) { printf("%d\n", step); free(endx); free(endy); free(startx); free(starty); return inst-step-1; } startx[step] = x; starty[step] = y; endx[step] = x+in; endy[step] = y; x = x+in; } if(dir == 2) { if((i > 4 && starty[i-5] >= y-in && starty[i-5] <= y && startx[i-5] <= x && endx[i-5] >= x) || (i > 2 &&starty[i-3] >= y-in && starty[i-3] <= y && startx[i-3] <= x && endx[i-3] >= x)) { printf("%d\n", step); free(endx); free(endy); free(startx); free(starty); return inst-step-1; } startx[step] = x; starty[step] = y-in; endx[step] = x; endy[step] = y; y = y-in; } if(dir == 3) { if((i > 4 && startx[i-5] >= x-in && startx[i-5] <= x && starty[i-5] <= y && endy[i-5] >= y) || (i > 2 &&startx[i-3] >= x-in && startx[i-3] <= x && starty[i-3] <= y && endy[i-3] >= y)) { printf("%d\n", step); free(endx); free(endy); free(startx); free(starty); return inst-step-1; } startx[step] = x-in; starty[step] = y; endx[step] = x; endy[step] = y; x = x-in; } step++; dir = (dir+1)%4; } printf("OK\n"); free(endx); free(endy); free(startx); free(starty); return 0; } int main() { int inst; while(scanf("%d", &inst) == 1) { int j,tmp2,tmp =fce(inst); for(j=0;j