문제
정올이는 정사각형 모양의 퍼즐 조각 맞추기 놀이를 하고 있다.
퍼즐 한 세트는 N * N개의 조각으로 구성되어 있다.
퍼즐의 한 조각은 M * M 크기의 기본 정사각형 모양에서 각 변의 단위마다 1만큼 밖으로 돌출되어 있거나 평면이거나 안쪽으로 돌출되어 있다. (단, 꼭지점 부분은 항상 평면이다.)
다행히 각 변의 짝은 유일하거나 존재하지 않으므로 쉽게 짝을 찾아나갈 수 있었다.
퍼즐 조각을 맞추기를 거의 완성해 가는 중 잠깐 화장실을 간 사이에 막 걸음마를 시작한 동생이 어느새 퍼즐에 다가와서 그만 퍼즐을 엎어버리고 말았다.
어린 동생이 모르고 저지른 일이니 누구를 탓할 수도 없고 다시 처음부터 조각을 맞추려니 짜증이 몰려오기 시작했다.
다행히 각 퍼즐 조각이 회전 된 경우는 없으므로 퍼즐 조각을 돌려서 맞출 필요는 없다.
울상이 된 정올이를 위해 퍼즐을 맞추는 프로그램을 작성해 주도록 하자.
입력
입력의 첫 번째 줄에는 N과 M이 입력된다. (2 <= N <= 50, 6 <= M <= 16, 단 N*N*4 < 3의 M제곱)
다음 줄부터 (N * N) * 4줄에 걸쳐 각 퍼즐 조각의 정보가 입력된다.
한 개의 퍼즐 조각 정보는 오른쪽부터 시계방향으로 각 변의 상태를 나타내는 길이 M인 4개의 문자열로 이루어진다.
각 변의 상태는 왼쪽에서 오른쪽 또는 위에서 아래의 순서로 'M’, ‘0’, ‘F’세 개의 문자로 나타낸 문자열이며 각각 바깥돌출, 평면, 안쪽돌출을 나타낸다.
각 퍼즐조각은 입력되는 순서대로 0번부터 N * N - 1번까지 번호를 부여한다.
다음 4개의 줄에는 행과 열의 좌표가 입력된다.
출력
알고자 하는 행과 열의 좌표에 배치되는 퍼즐 조각의 번호를 공백으로 구분하여 출력한다.
예제
3 6
00M000
0MMFF0
0MMMF0
00FM00
0MM0F0
0M00F0
0M0FF0
00MM00
000000
00MF00
000MM0
00FFF0
0F0FM0
00FF00
0FM0F0
00F0F0
0MF0M0
0F0MF0
000000
0M0MM0
00FFM0
0FFM00
0MFMF0
0FFMM0
00M0F0
000MF0
00MMF0
0FM0M0
0FF0F0
00MFF0
00F0M0
0F00M0
0F0MM0
0MF0F0
00F000
0M0FM0
0 0
0 1
1 2
2 1
2 4 1 6
두 블록의 맞 닿는 변이 각각 'M' - 'F', '0' - '0', 'F' - 'M' 으로 대응될 때 서로 짝이 된다.
[ 입력 예를 블록으로 만들어 보면 아래와 같다.]
00FM00 M 0 M 0 M M 번 0 F O 0MMFFO
00MM00 M M 0 1 M F 번 0 F F 0M00F0
00FFF0 0 0 0 2 0 M 번 0 M 0 00MF00
00F0F0 F F M 3 0 0 번 F F M 00FF00
0M0MM0 0 M 0 4 F 0 번 0 0 M 0F0MF0
0FFMM0 M 0 F 5 F M 번 F F M 0FFM00
0FM0M0 0 0 M 6 M M 번 0 F F 000MF0
0F00M0 0 F F 7 F 0 번 0 M F 00MFF0
0M0FM0 0 F F 8 0 0 번 M 0 M 0MF0F0
////////////////// [퍼즐을 맞춘 후 결과] 2 4 3 0 8 1 5 6 7 /////////////////