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

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

Nim/3

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

요약
각 플레이어가 원하는 승자를 정한 3인용 님 게임에서, 플레이어 1이 두어야 할 최적의 수를 스택 번호와 개수가 작은 순서로 구한다.
난이도

보통10점 중 7점

유형
게임 이론, 동적 계획법, 완전 탐색, 재귀
정답자
아직 제출이 없습니다

문제

당신은 어려운 프로그래밍 대회에 참가하기 위해 결정론의 나라 Determinisia에 머물고 있습니다. Determinisia 사람들은 결정론적 게임, 즉 플레이어들이 최적으로 플레이한다는 가정 아래 결과를 미리 알 수 있는 게임을 매우 좋아합니다. 그들은 모든 일이 예상한 그대로 흘러가는 것을 보는 것을 즐깁니다.

위대한 스승 Oneplusoneistwo는 수천 년 전에 님(Nim) 게임을 만들었고, 이 게임은 지금도 Determinisia에서 매우 인기가 많습니다. 규칙은 간단합니다. 성냥이 쌓인 더미가 세 개 있습니다(비어 있어도 됩니다). 플레이어들은 번갈아 가며, 비어 있지 않은 더미 하나를 골라 그 더미에서 원하는 만큼(1개 이상) 성냥을 가져갑니다. 세 더미를 모두 비게 만드는, 즉 마지막 성냥을 가져가는 플레이어가 이깁니다.

최근 과학자 Oneplustwoisthree는 세 명이 하는 님 게임인 Nim/3을 제안했습니다. 이 게임을 결정론적으로 만들기 위해, 각 플레이어는 자신을 제외한 나머지 두 명 중 한 명을 '최애(favorite)'로 정해 둡니다. 자신이 이길 수 없는 경우, 그 플레이어는 자신의 최애가 이기도록 플레이합니다. 또한 모든 플레이어는 서로의 최애가 누구인지 알고 있습니다. 즉, 각 플레이어의 선호 순서는 (자신이 이김) > (최애가 이김) > (나머지 한 명이 이김) 입니다.

당신은 이 게임에서 1번 플레이어입니다. 현지 학생들과 어울리기 위해 Nim/3을 몇 판 두고 싶지만, 최적으로 플레이할 때에만 가능합니다. 다행히 게임 도중 도움을 줄 컴퓨터 프로그램을 작성해도 됩니다. 1번 플레이어인 당신의 최적 수, 즉 어느 더미에서 몇 개를 가져갈지를 구하세요.

입력

첫 번째 줄에는 테스트 케이스의 개수 TT가 주어집니다. 이어서 각 테스트 케이스는 다음 형식으로 주어집니다.

  • 여섯 개의 정수 s1 s2 s3 f1 f2 f3s_1\ s_2\ s_3\ f_1\ f_2\ f_3 가 한 줄에 주어집니다. 여기서 s1,s2,s3s_1, s_2, s_3 은 각각 1번, 2번, 3번 더미에 있는 성냥의 개수이며 0≤sn≤200 \le s_n \le 20, s1+s2+s3≥1s_1 + s_2 + s_3 \ge 1 을 만족합니다. f1,f2,f3f_1, f_2, f_3 은 각각 1번, 2번, 3번 플레이어의 최애를 나타냅니다.

fp∈{1,2,3}∖{p}f_p \in \{1, 2, 3\} \setminus \{p\} 임에 유의하세요. 현재 차례는 1번 플레이어이고, 그다음이 2번, 그다음이 3번 플레이어이며 이 순서가 반복됩니다.

출력

각 테스트 케이스마다, 1번 플레이어가 최적으로 플레이할 때 두는 수를 두 정수 kk 와 nn 으로 한 줄에 공백으로 구분하여 출력합니다. k∈{1,2,3}k \in \{1, 2, 3\} 은 더미 번호이고, 0<n≤sk0 < n \le s_k 는 그 더미에서 가져갈 성냥의 개수입니다. 최적의 수가 여러 개일 수 있는데, 이때는 kk 가 가장 작은 것을, kk 가 같다면 nn 이 가장 작은 것을 출력합니다.

예제1

  1. 예제 1

    입력
    3
    1 1 5 3 3 2
    1 1 5 2 1 1
    0 1 4 2 1 1
    
    예상 출력
    3 4
    1 1
    3 1