수열 만들기
시간 제한1초메모리 제한128 MB
중력에 따라 공이 쌓이는 3차원 틱택토 게임을 시뮬레이션해서 13가지 방향 중 m개 연속이 처음 만들어지는 순간의 승자를 판정합니다.
문제
두 사람이 삼차원판 틱택토를 둔다. 두 사람은 정육면체 모양의 판에 공을 떨어뜨리며, 같은 색 공을 정해진 길이만큼 한 줄로 이어 놓으려 한다. 각 경기의 기록을 시뮬레이션하여 승자를 판정하는 프로그램을 작성하는 것이 과제이다.
경기는 두 매개변수로 정해진다. 판의 크기 과 목표 수열 길이 이다.
정확한 규칙은 다음과 같다.
- 흑과 백 두 사람이 번갈아 두며, 흑이 먼저 둔다.
- 세로 막대(peg)가 개 있고, 각 막대에는 공을 최대 개까지 쌓을 수 있다. 막대는 , 좌표로 지정하며 (), 막대 위의 공은 좌표로 지정한다 (). 경기 시작 시 모든 막대는 비어 있다.
- 자기 차례에 한 사람은 개의 막대 중 하나를 골라 자기 색 공을 떨어뜨린다. 공은 중력을 따른다. 즉, 그 막대에 이미 쌓인 가장 높은 공 바로 위에 놓이며, 막대가 비어 있으면 바닥에 놓인다. 다시 말해 두는 사람은 공의 , 좌표만 정할 수 있고 좌표는 정할 수 없다.
- 목표는 -수열을 만드는 것이다. -수열이란 같은 색 공 개가 한 직선 위에 연속으로 놓인 것을 말한다. 길이가 이상인 줄을 먼저 만든 사람이 즉시 이긴다. 예를 들어 , , 에 놓인 흑 공은 3-수열을 이룬다.
수열은 축 방향이나 대각선 방향으로 뻗을 수 있다. 서로 반대 방향은 같은 방향으로 보므로, 서로 다른 방향은 정확히 13가지이다.
- 축 방향 (3가지). 예: , , .
- 이차원 대각선 (6가지). 예: , , .
- 삼차원 대각선 (4가지). 예: , , .
각 경기의 기록이 주어지며, 승자를 판정해야 한다.
삼차원 줄은 사람 눈으로 알아채기 어렵기 때문에, 이미 승부가 난 뒤에도 계속 두는 경우가 있다. 승자가 정해진 뒤에 둔 수는 모두 무시해야 한다. 즉 맨 처음 만들어진 -수열만 유효하며, 그 뒤에 만들어진 수열은 승자를 바꾸지 못한다.
경기가 반드시 승리로 끝나는 것은 아니다. 공을 더 놓을 수 있는 막대가 하나도 없으면 무승부이다. 또한 -수열이 하나도 만들어지기 전에 경기를 그만두는 경우도 있는데, 이 역시 무승부이다.
입력
입력은 여러 개의 데이터셋으로 이루어지며, 각 데이터셋은 한 경기의 기록이다.
각 데이터셋은 공백 하나로 구분된 세 양의 정수 , , 가 적힌 줄로 시작한다. 여기서 , 이다. 과 은 판의 크기와 수열 길이이고, 는 둔 수의 개수이다.
이어지는 개의 줄에는 각각 두 양의 정수 , () 가 있다. 차례인 사람이 막대 에 공을 떨어뜨린다는 뜻이다. 한 경기 동안 어떤 막대에도 공이 개를 넘게 놓이는 일은 없다.
입력의 끝은 세 개의 0 이 적힌 줄 0 0 0 으로 나타낸다. 이 줄은 데이터셋에 포함되지 않는다.
출력
각 데이터셋마다 정확히 한 줄을 출력한다.
한쪽이 이기면 승자(Black 또는 White), 공백 하나, 그리고 승부가 결정된 수의 번호를 출력한다. 무승부이면 Draw 를 출력한다. 그 밖의 다른 문자는 출력하지 않는다.