만드는 중입니다

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

격자 게임

시간 제한2초메모리 제한1024 MB

요약
두 사람이 격자에서 오른쪽과 아래로만 이동하며 값을 XOR로 바꾸는 게임에서, 최적으로 플레이할 때 이기는 쪽을 구합니다.
난이도

어려움10점 중 9점

유형
게임 이론, 비트 연산, 동적 계획법, 행렬
정답자
아직 제출이 없습니다

문제

크기가 N×MN \times M인 격자 AA가 주어집니다. 행은 위에서 아래로 1번부터 NN번까지, 열은 왼쪽에서 오른쪽으로 1번부터 MM번까지 번호가 붙어 있습니다. (r,c)(r, c)는 rr행 cc열의 칸을 뜻합니다.

각 칸 (r,c)(r, c)에는 −1-1 또는 0 이상의 정수 Ar,cA_{r,c}가 적혀 있습니다. Ar,c=−1A_{r,c} = -1이면 그 칸은 통과할 수 없습니다. 그 밖의 칸은 통과할 수 있습니다.

두 플레이어가 번갈아 가며 이 격자에서 게임을 합니다. 한 턴에 플레이어는 다음을 수행합니다.

  1. 양의 정수가 적힌 칸을 하나 골라 그 칸에 섭니다. 이 시작 칸의 정수를 xx라고 합니다.
  2. y<xy < x를 만족하는 음이 아닌 정수 yy를 고릅니다.
  3. (r,c)(r, c)에 서 있을 때 Ar,cA_{r,c}를 Ar,c⊕x⊕yA_{r,c} \oplus x \oplus y로 바꿉니다. 여기서 ⊕\oplus는 비트 XOR입니다.
  4. 칸 (r+1,c)(r+1, c) 또는 (r,c+1)(r, c+1) 중 하나라도 통과할 수 있으면, 플레이어는 통과할 수 있는 칸 중 원하는 칸으로 반드시 이동한 뒤 3번으로 돌아갑니다.
  5. 더 이동할 수 없으면 플레이어는 격자 밖으로 나가고 턴을 끝냅니다.

양의 정수가 적힌 칸이 없어서 턴에 플레이할 수 없는 플레이어는 집니다. 그러면 상대가 이깁니다.

두 플레이어가 최선을 다할 때 누가 이기는지 구하십시오.

입력

첫 줄에 두 정수 NN과 MM (1≤N,M≤5001 \le N, M \le 500)이 주어집니다. 이어지는 NN개의 줄에는 각각 MM개의 정수 Ar,cA_{r,c} (0≤Ar,c≤1090 \le A_{r,c} \le 10^9 또는 Ar,c=−1A_{r,c} = -1)가 주어집니다.

출력

첫 번째 플레이어가 이기면 first를, 그렇지 않으면 second를 한 줄에 출력합니다.

예제3

  1. 예제 1

    입력
    5 6
    0 0 0 0 0 0
    0 3 3 0 0 0
    0 0 3 -1 0 0
    0 0 3 3 3 3
    0 0 -1 -1 -1 -1
    
    예상 출력
    first
    
  2. 예제 2

    입력
    2 2
    1 1
    2 -1
    
    예상 출력
    first
    
  3. 예제 3

    입력
    1 1
    -1
    
    예상 출력
    second