#include<stdio.h> int N, M, data[1010][1010], ans[4040], fx[2] = { 0,-1 }, fy[2] = { 1,0 }, d, x, y; int main() { int i, j; scanf("%d%d", &N, &M); for (i = 1; i <= N; i++) { for (j = 1; j <= M; j++) { scanf("%d", &data[i][j]); } } for (i = 1; i <= N; i++) { d = 0; x = i; y = 1; while (x >= 1 && y <= M) { if (data[x][y] == 1 && d == 0) { d = 1; } else if (data[x][y] == 1 && d == 1) { d = 0; } x += fx[d]; y += fy[d]; } if (x == 0) { ans[i] = 2 * (N + M) - y + 1; ans[2 * (N + M) - y + 1] = i; } else { ans[i] = 2 * N + M - x + 1; ans[2 * N + M - x + 1] = i; } } for (i = 1; i <= M; i++) { d = 1; x = N; y = i; while (x >= 1 && y <= M) { if (data[x][y] == 1 && d == 0) { d = 1; } else if (data[x][y] == 1 && d == 1) { d = 0; } x += fx[d]; y += fy[d]; } if (x == 0) { ans[N + i] = 2 * (N + M) - y + 1; ans[2 * (N + M) - y + 1] = N + i; } else { ans[N + i] = 2 * N + M - x + 1; ans[2 * N + M - x + 1] = N + i; } } for (i = 1; i <= 2 * (N + M); i++) { printf("%d ", ans[i]); } return 0; }
2344번: 거울
https://www.acmicpc.net/problem/2344
피드 구독하기:
댓글
(
Atom
)
댓글 없음 :
댓글 쓰기