해결한 사람
0
명
정답률
0.00
%
시간 제한
2000
ms
메모리 제한
245
MB
학생들이 시험을 치르기 위해 교실에 들어와 어떤 방식으로 자리에 앉았다. 교사는 다음과 같이 생각했다. "Probably they sat in this order to copy works of each other. I need to rearrange them in such a way that students that were neighbors are not neighbors in a new seating."
교실은 n개의 행과 m개의 열로 이루어진 행렬로 나타낼 수 있으며, 각 칸에는 학생이 한 명씩 있다. 두 학생이 앉은 칸이 한 변을 공유하면 두 학생은 이웃이다.
학생들에게 행 순서대로 1부터 n·m까지 번호를 매기자. 따라서 처음에 i행 j열의 칸에 앉아 있는 학생의 번호는 (i - 1)·m + j이다. 1부터 n·m까지의 모든 수가 정확히 한 번씩 나타나고, 원래 행렬에서 인접한 번호들이 이 행렬에서는 인접하지 않는 n개의 행과 m개의 열로 이루어진 행렬을 찾거나, 그러한 행렬이 없음을 판별해야 한다.
유일한 줄에 두 정수 n와 m (1 ≤ n, m ≤ 105; n·m ≤ 105)가 주어진다. 이는 필요한 행렬의 행 수와 열 수이다.
그러한 행렬이 없다면 "NO"를 출력한다(따옴표 제외).
그렇지 않다면 첫 번째 줄에 "YES"를 출력하고(따옴표 제외), 다음 n개의 줄에 필요한 행렬을 이루는 m개의 정수를 출력한다.
2 1
NO
2 4
YES
2 4 1 3
7 5 8 6
첫 번째 테스트 케이스에서 행렬은 처음에 다음과 같은 모습이다.
1 2 3 4
5 6 7 8
두 행렬 모두에서 인접한 두 학생은 존재하지 않음을 쉽게 알 수 있다.
두 번째 테스트 케이스에서는 가능한 자리 배치가 두 가지뿐이며, 두 배치 모두에서 번호가 1과 2인 학생들이 이웃이다.