아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

깊이 순서

시간 제한1초메모리 제한128 MB

요약
겹쳐진 직사각형들의 픽셀 영상이 가능한 배치인지 판정하고 질의한 직사각형이 가질 수 있는 깊이 순서 범위를 구합니다.
난이도

어려움10점 중 8점

유형
위상 정렬, 그래프, 기하, 행렬
정답자
아직 제출이 없습니다

문제

물체들을 사진으로 찍으면 이미지가 만들어진다. 이미지는 물체들을 담고 있지만, 물체 공간에 대한 정보의 일부는 이미지에서 사라질 수 있다. 이렇게 사라진 정보를 복원하는 일은 흥미롭고 때로는 까다롭다.

다음 시나리오를 가정한다.

  • [A1] 이미지는 z=−∞z = -\infty 방향에서 직사각형들을 촬영하여 얻는다. 각 직사각형의 변은 xx축 또는 yy축과 평행하고, 각 직사각형의 면은 xyxy평면과 평행하다.
  • [A2] 직사각형들의 zz좌표는 모두 다르다. 직사각형들의 깊이 순서는 11부터 nn까지 번호를 매기며, 가장 위(즉 zz좌표가 가장 작은 것)에 있는 직사각형의 순서가 11이다.

각 직사각형의 깊이 정보(zz좌표)는 이미지에 나타나지 않지만, 두 직사각형 중 어느 것이 위에 있는지 추론할 수 있는 경우가 있다(물론 추론할 수 없는 경우도 있다). 예를 들어 그림 1에서는 점선 직사각형 R1R_1이 짙은 색 직사각형 R2R_2 위에 있음을 쉽게 알 수 있다. 이때 "R1R_1이 R2R_2 위에 있다", "R2R_2가 R1R_1 아래에 있다"고 말한다. [A2]에 따르면 R1R_1의 깊이 순서는 11, R2R_2의 깊이 순서는 22이다.

그림 1

그림 1

[A1] 때문에 위/아래 관계는 추이적이다. 즉 R1R_1이 R2R_2 위에 있고 R2R_2가 R3R_3 위에 있으면 R1R_1이 R3R_3 위에 있다고 결론지을 수 있다. 그림 2에서는 회색 직사각형 R2R_2가 R3R_3 위에 있고 R1R_1이 R2R_2 위에 있으므로, 점선 직사각형 R1R_1이 짙은 색 직사각형 R3R_3 위에 있다고 결론지을 수 있다. 반면 오른쪽 아래 직사각형 R5R_5에 대해서는 아무 정보도 얻을 수 없다. 이런 경우 R5R_5와 다른 어떤 직사각형 사이의 깊이 순서도 추론할 수 없다고 말한다. 마찬가지로 짙은 색 직사각형 R3R_3와 가로줄로 채워진 직사각형 R4R_4 사이의 깊이 순서도 추론할 수 없다. [A2]에 따르면 R1R_1의 깊이 순서는 11 또는 22, R2R_2는 22 또는 33, R3R_3는 33, 44, 55 중 하나, R4R_4는 33, 44, 55 중 하나, R5R_5는 11부터 55까지 중 어느 것이든 될 수 있다.

그림 2

그림 2

모든 이미지가 유효한 것은 아니다. 그림 3은 [A1]과 [A2] 가정 아래에서는 얻을 수 없는 "불가능한" 이미지의 예를 보여준다.

그림 3

그림 3

이미지 하나와 추가로 직사각형 α\alpha가 주어진다. 이미지가 [A1]과 [A2] 아래에서 얻을 수 없는 것이면 IMPOSSIBLE을 출력한다. 그렇지 않으면 두 정수 β\beta와 γ\gamma(β≤γ\beta \le \gamma)를 출력한다. 여기서 α\alpha의 깊이 순서가 가질 수 있는 가장 넓은 범위가 β,β+1,…,γ\beta, \beta+1, \ldots, \gamma이다.

입력

입력은 TT개의 테스트 케이스로 이루어진다. 입력의 첫 줄에 TT가 주어진다.

각 테스트 케이스의 첫 줄에는 세 정수 nn, NXN_X, NYN_Y(2≤n≤522 \le n \le 52; 2≤NX,NY≤802 \le N_X, N_Y \le 80)가 공백으로 구분되어 주어진다. nn은 직사각형의 개수이고, NXN_X와 NYN_Y는 각각 이미지의 너비와 높이이다.

이어지는 NXN_X개의 줄에는 각각 NYN_Y개의 픽셀이 공백으로 구분되어 주어진다. 각 픽셀은 배경을 나타내는 기호 $이거나, 직사각형을 나타내는 a, b, ..., z, A, B, ..., Z 중 한 글자이다. 대문자와 소문자는 서로 다른 것으로 구분한다. 가장 작은 직사각형은 1×11 \times 1까지 작을 수 있다.

각 테스트 케이스의 마지막 줄에는 글자 α\alpha가 주어진다. 이는 깊이 순서의 가장 넓은 범위를 출력해야 하는 직사각형이다.

출력

각 테스트 케이스에 대해, 이미지가 [A1]과 [A2] 아래에서 얻을 수 없는 것이면 한 줄에 IMPOSSIBLE을 출력한다.

그렇지 않으면 두 정수 β\beta와 γ\gamma(β≤γ\beta \le \gamma)를 하나의 공백으로 구분하여 출력한다. 여기서 α\alpha의 깊이 순서가 가질 수 있는 가장 넓은 범위가 β,β+1,…,γ\beta, \beta+1, \ldots, \gamma이다.

예제3

  1. 예제 1

    입력
    3
    2 4 7
    b b b b b $ $
    b b b b b $ $
    b b C C C C C
    $ $ C C C C C
    C
    5 7 6
    $ d d d c $
    $ d b b b b
    a a a b b b
    a a a d c $
    a a a d $ $
    a a a $ $ e
    a a a $ $ e
    c
    2 3 4
    d d d Z
    d Z d Z
    d d d Z
    d
    
    예상 출력
    1 1
    3 5
    IMPOSSIBLE
    
  2. 예제 2

    입력
    1
    2 2 3
    a a $
    a a b
    a
    
    예상 출력
    1 2
    
  3. 예제 3

    입력
    1
    2 2 2
    a a
    a b
    a
    
    예상 출력
    2 2