만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

중력 격자

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

요약
중력이 작용하는 Connect Four 변형에서 두 사람이 떨어뜨린 착수 기록을 따라가며, k개가 한 줄로 이어지는 첫 턴과 승자를 구하거나 무승부를 판정합니다.
난이도

보통10점 중 4점

유형
시뮬레이션, 행렬, 구현
정답자
아직 제출이 없습니다

문제

앨리스와 밥은 Connect Four를 일반화한 게임을 하고 있다. 이 게임의 보드는 높이가 hh인 열이 ww개 있고, 같은 색 타일 kk개를 세로, 가로, 또는 대각선으로 먼저 한 줄로 완성하는 플레이어가 이긴다. 두 플레이어는 번갈아 가며 열 하나를 골라 타일을 떨어뜨린다. 앨리스는 빨간 타일을 쓰고 먼저 두며, 밥은 노란 타일을 쓰고 나중에 둔다. 타일이 떨어지면 그 열에서 비어 있는 가장 아래 칸까지 내려가고, 그 칸은 더 이상 사용할 수 없다. 열에 타일이 hh개 쌓이면 그 열은 가득 차서 더 이상 타일을 떨어뜨릴 수 없다.

그림 G.1: 예시 케이스를 시각화한 그림이다. 각각 0수, 3수, 8수, 12수를 둔 뒤의 게임 상태를 보여 준다. 앨리스의 타일은 빨간색, 밥의 타일은 노란색이다.

앨리스와 밥은 승리 조건을 추적하기가 꽤 어려워서, 보드가 타일로 완전히 찰 때까지 그냥 계속 두었다. 두 사람은 둔 수의 기록을 남겼고, 누가 게임에서 이겼는지, 그리고 몇 번째 차례에 이겼는지 알려 달라고 부탁했다. 어느 플레이어도 한 줄을 완성하지 못했다면 무승부이므로 그 사실을 보고하라.

입력

입력은 다음과 같다.

  • 첫 줄에 정수 hh, ww, kk가 주어진다 (h,w≥1,h⋅w≤250 000,1≤k≤max⁡(h,w)h, w \ge 1, h \cdot w \le 250\,000, 1 \le k \le \max(h,w)). 열은 1번부터 ww번까지 번호가 매겨져 있다.
  • 둘째 줄에 h⋅wh\cdot w개의 정수 a_1,…,a_h⋅wa\_1,\dots,a\_{h\cdot w} (1≤a_i≤w1 \le a\_i \le w for each ii)가 주어진다. a_ia\_i는 ii번째 타일을 떨어뜨린 열의 번호다. 홀수 번째 값은 앨리스의 수, 짝수 번째 값은 밥의 수에 해당한다. 각 열은 이 목록에 정확히 hh번 나타난다.

출력

게임의 승자를 A(앨리스) 또는 B(밥)로 출력하고, 이어서 승자를 결정하는 데 필요한 수의 개수를 출력하라. 게임이 무승부로 끝나면 대신 D를 출력하라.

예제3

  1. 예제 1

    입력
    4 3 2
    1 1 2 3 3 2 2 1 1 2 3 3
    
    예상 출력
    A 3
    
  2. 예제 2

    입력
    4 3 3
    1 1 2 3 3 2 2 1 1 2 3 3
    
    예상 출력
    B 8
    
  3. 예제 3

    입력
    4 3 4
    1 1 2 3 3 2 2 1 1 2 3 3
    
    예상 출력
    D