#include int main(){ int q,n,i,j; //入力用 int pos_x = 0,pos_y = 0; //位置座標 int t = 0,mode = 0,flg = 1,cnt = 0,r,f; //制御用変数 scanf("%d%d%d%d",&q,&n,&i,&j); //条件入力 signed int map[n][n]; for(r= 0;r < n;r++){ for(f = 0;f < n;f++){ map[r][f] = -1; } } map[0][0] = 0; for(r = 0;r < q;r++){ flg = 1; while(flg){ switch(mode){ case 0: if(map[pos_x][pos_y + 1] == -1 && (pos_y + 1) < n){ map[pos_x][++pos_y] = ++t; cnt++; }else{ mode++; } break; case 1: if(map[pos_x + 1][pos_y] == -1 && (pos_x + 1) < n){ map[++pos_x][pos_y] = ++t; cnt++; }else{ mode++; } break; case 2: if(map[pos_x][pos_y - 1] == -1 && (pos_y - 1) > 0){ map[pos_x][--pos_y] = ++t; cnt++; }else{ mode++; } break; case 3: if(map[pos_x - 1][pos_y] == -1 && (pos_x - 1) > 0){ map[--pos_x][pos_y] = ++t; cnt++; }else{ mode++; } break; case 4: if (cnt == 0) flg = 0; mode = 0; cnt = 0; break; } } printf("%d\n",map[i][j]); } return 0; }