페이지가 로드되지 않나요? 여기를 눌러보면 고쳐질 수도 있어요.
Placeholder

#6137

달리는 두더지 1s 1024MB

문제

두더지가 정올이네 마당에 W \times L크기의 직사각형 격자 모양의 터널로 구멍을 뚫었다!

피해에 격분한 정올이는 두더지를 잡기 위해 N 마리의 테리어를 마당에 풀어 놓았다.

테리어는 매우 민감한 청각을 가지고 있어 두더지에 충분히 가까이 다가가면 매우 빠르게 땅을 파서 설치류를 잡을 수 있다.

안타깝게도 두더지는 테리어의 발자국 소리에 매우 민감하여 적극적으로 테리어를 피하려고 한다.

정올이는 테리어가 풀려났을 때 두더지가 어디에 있었는지 전혀 모르지만 정올이는 한동안 테리어들이 마당을 돌아다니는 것을 지켜봤다.

정올이가 관찰한 내용을 바탕으로 두더지가 어디에 있을지 추론하는 프로그램을 작성하시오.

처음 정올이가 테리어를 마당에 각 위치에 풀어놨을 때는 두더지는 테리어의 아래나 근처에 있지 않았다.

이후의 각 시간이 흐름에따라 테리어는 동일한 위치에 남아 있을 수도 있고 수평 또는 수직으로 한 칸 이동할 수도 있다. (시간대별 테리어의 위치는 모두 정올이가 기록을 해두었다)

그러면 두더지도 똑같이 동일한 위치에 남아 있을 수도 있고 수평 또는 수직으로 한 칸 이동했을 수도 있다.

테리어나 두더지가 이러한 움직임을 하기 전후에 테리어가 두더지 바로 위에 있거나 두더지에 인접한 위치(수평 또는 수직)에 있었다면 두더지는 잡혔을 것이다.

프로그램은 T 시간이 지났을 때의 테리어에게 잡히지 않고남은 두더지의 가능한 위치 목록을 출력해야 한다.


입력

첫 번째 줄에는 4개의 정수 W, L, N, T 가 주어진다. (1 \le W, L \le 20, 1 \le N \le 10, 1 \le T \le 10)

두 번째 줄부터 N줄에 걸쳐 i번째 테리어가 T 시간 동안 각 시간대 별로 위치해있던 (x,y) 좌표를 나타내는 2T개의 정수가 공백으로 구분되어 주어진다. (0 \le x \le W, 0 \le y \le L)

  • 테리어의 위치는 겹치는 것이 가능하다.


출력

두더지의 가능한 위치가 하나 이상 있으면 두더지의 가능한 모든 위치를 (x, y) 쌍으로 구분하여 각 줄 당 최대 8쌍을 출력한다. (마지막 줄의 경우 8쌍 미만일 수도 있다)

행의 첫 번째 쌍 앞에는 선행 공백이 없어야 하고 행의 마지막 쌍 뒤에는 후행 공백이 있어서는 안된다. 그러나 같은 행의 연속 쌍은 정확히 하나의 공백으로 구분해야 한다.

쌍은 내부 공백 없이 "(x, y)" 형식으로 출력한다. 쌍은 더 낮은 y 값을 가진 쌍이 더 높은 y 값을 가진 쌍 앞에 오고, 동일한 y 값을 가진 쌍의 경우 더 낮은 x 값을 가진 쌍이 더 높은 x 값을 가진 쌍 앞에 오도록 하는 순서로 출력해야 한다.

두더지가 위치할 수 있는 곳이 없는 경우 "No possible locations"라고 출력한다.


예제 #1

1 4 2 3
1 1 1 2 1 3
0 1 0 2 0 3
No possible locations

예제 #2

6 2 2 4
3 0 3 1 4 1 4 0
3 1 3 1 4 1 3 1
(0,0) (1,0) (2,0) (6,0) (0,1) (1,1) (5,1) (6,1)
(0,2) (1,2) (2,2) (4,2) (5,2) (6,2)

출처

2004 Mid-Atlantic Regional Programming Contest D번
로그인해야 코드를 작성할 수 있어요.