#286
Silver III
조형물 복구
원문: English
시간 제한
2s
메모리 제한
1024MB
제출
0
정답
0
맞힌 사람
0
정답 비율
0.0%

문제

유진이는 동아리방을 꾸미기 위해 3D 프린터로 정교한 조형물을 하나 만들었다. 조형물의 모양은 '#'와 '.' 문자로 이루어진 N×NN \times N 격자판으로 표현된다 (3N83 \le N \le 8). 여기서 '#'은 조형물의 일부를 나타내고, '.'은 빈 공간을 나타낸다.

그런데 유진이가 조형물을 옮기던 중, 실수로 조형물을 바닥에 떨어뜨리고 말았다. 조형물은 정확히 두 조각으로 부서졌고, 바닥에 있던 다른 KK개의 조각들 사이로 섞여 들어갔다 (3K103 \le K \le 10). 각 조각 역시 원래 조형물과 마찬가지로 N×NN \times N 격자판으로 표현된다.

유진이를 도와 바닥에 있는 KK개의 조각 중 어떤 두 조각을 합쳐야 원래 조형물을 복구할 수 있는지 알아내자. 다행히 조각들은 바닥에 떨어질 때 회전하거나 뒤집히지 않았다. 따라서 각 조각을 가로 또는 세로 방향으로 적절히 평행 이동한 뒤 겹쳐서 원래 조형물을 만들 수 있다.

정확히 복구한다는 것은 다음을 의미한다.

  • 두 조각을 평행 이동하여 겹쳤을 때, '#' 문자가 위치한 곳들이 원래 조형물의 '#' 위치와 정확히 일치해야 한다.
  • 두 조각을 겹쳤을 때, 어느 위치에서도 두 조각의 '#' 문자가 서로 겹쳐서는 안 된다. 즉, 각 '#' 위치는 두 조각 중 정확히 한 곳에만 존재해야 한다.
  • 어떤 조각을 이동시킬 때, 그 조각에 포함된 모든 '#' 문자가 N×NN \times N 격자 범위를 벗어나서는 안 된다.
  • 한 조각이 여러 개의 떨어진 '#' 뭉치로 구성되어 있더라도, 한 조각 내의 모든 '#' 문자는 항상 같은 방향으로 같은 거리만큼 이동해야 한다.

입력

첫째 줄에 정수 NNKK가 공백으로 구분되어 주어진다. (3N83 \le N \le 8; 3K103 \le K \le 10)

이어서 NN개의 줄에 걸쳐 원래 조형물의 모양을 나타내는 N×NN \times N 격자판이 주어진다.

그다음 K×NK \times N개의 줄에 걸쳐 KK개의 조각 모양을 나타내는 N×NN \times N 격자판이 순서대로 주어진다.

출력

원래 조형물을 복구할 수 있는 두 조각의 번호를 공백으로 구분하여 한 줄에 출력한다. 조각의 번호는 11부터 KK까지의 정수이며, 항상 유일한 해가 존재한다. 출력하는 두 번호는 오름차순이어야 한다.

코드 제출

코드를 제출하려면 로그인이 필요합니다.

로그인
내 제출
제출 내역이 없습니다.
맞은 사람
아직 맞은 사람이 없습니다.
난이도 투표
Silver III1명 투표· 약 1개월 전
로그인 후 AC 받으면 투표할 수 있습니다.
전체 제출
제출 내역이 없습니다.