즐라갈리차
시간 제한1초메모리 제한1024 MB
주어진 순서대로 각 조각의 u와 d 값에 따라 직사각형 조각 n개를 차례로 붙이고, 완성된 퍼즐의 높이, 너비, 최종 격자를 출력합니다.
문제
리틀 마야는 늘 퍼즐을 좋아했다. 모두가 이를 알고 있으니, 어느 맑은 날 마야가 이상한 퍼즐을 선물로 받은 것도 놀라운 일이 아니다.
이 퍼즐에는 개의 조각이 있다. 각 조각은 직사각형이고 색이 있다. 각 조각의 뒷면에는 두 개의 수 와 가 적혀 있다. 조각을 이리저리 맞춰 보면서 마야는 이 수들의 의미를 알아냈다.
수 는 방향을 나타낸다. 다음 조각이 현재 조각의 위쪽에 붙는지, 오른쪽에 붙는지를 알려 준다. 수 는 다음 조각이 붙는 시작 열 또는 행을 알려 준다. 자세한 규칙은 다음과 같다.
- 가 이면, 다음 조각을 현재 조각의 위에 붙인다. 다음 조각의 왼쪽 아래 모서리를 현재 조각의 윗변의 번째 열에 맞춘다.
- 가 이면, 다음 조각을 오른쪽에 붙인다. 다음 조각의 왼쪽 아래 모서리를 현재 조각의 오른쪽 변의 번째 행에 맞춘다.
아래 그림은 색이 "a"와 "b"인 조각을 보여 준다. 그림 1은 이고 인 경우이고, 그림 2는 이고 인 경우이다. 두 경우 모두 와 는 색이 "a"인 조각의 뒷면에 적힌 수이다.
| 그림 1 | 그림 2 |
마야는 각 조각의 설명과 조각을 배치하는 순서가 주어졌을 때, 완성된 퍼즐이 어떤 모습인지 알고 싶어 한다. 완성된 퍼즐의 높이와 너비를 출력하고, 같은 높이와 너비의 직사각형 안에 퍼즐의 최종 모습을 출력하는 프로그램을 작성하라. 퍼즐이 없는 칸은 "."으로 출력한다.
입력
첫 줄에 퍼즐 조각의 개수 ()이 주어진다.
다음 개의 줄은 조각을 설명한다. 번째 줄에는 문자 와 정수 , , , 가 이 순서대로 주어진다.
- 는 영어 소문자 한 글자이며, 번째 조각의 색이다.
- 와 ()는 번째 조각의 행 수와 열 수이다.
- 와 (, 에 따라 또는 )는 번째 조각의 뒷면에 적힌 수이다.
마지막 줄에는 조각을 연결하는 순서를 나타내는 정수 개가 주어진다. 번째 정수 ()는 입력에서 번째로 주어진 조각을 가리킨다. 각 조각은 이 수열에 정확히 한 번 나타난다.
출력
완성된 퍼즐의 높이와 너비를 첫 줄에 출력한다. 이어서 같은 높이와 너비의 직사각형 안에 완성된 퍼즐을 출력한다. 퍼즐이 없는 칸은 "."으로 출력한다.