Quartets
시간 제한2초메모리 제한1024 MB
카드 게임 기록이 주어질 때, 모든 행동이 규칙에 맞는 초기 카드 분배가 있는지 확인하고 없다면 부정이 확실해지는 첫 행동 번호를 구합니다.
문제
당신은 아이들이 Quartets라는 친선 게임을 즐겁게 하는 모습을 지켜보고 있습니다. 어느 순간 아이들 중 몇 명이 부정행위를 하고 있을지도 모른다는 의심이 들기 시작했습니다. 정작 아이들은 전혀 개의치 않는 눈치입니다. 오히려 누군가 부정행위가 들통나면 게임이 더 재미있어집니다. 프로그래머인 당신은 게임을 지켜보는 것만으로 부정행위를 찾아낼 방법을 곧바로 생각하기 시작했습니다.
Quartets는 개의 세트로 나뉜 장의 카드 덱을 사용하는 인용 카드 게임입니다. 각 세트에는 카드 장이 있습니다. 실제 카드에는 교육용 그림이 자주 들어 있어서, 플레이어가 개별 대상뿐 아니라 그 분류 체계도 함께 배울 수 있습니다. 예를 들어 카드에는 동물이 그려져 있고, 세트는 포유류, 파충류 등 동물의 여러 집단에 대응할 수 있습니다.
Quartets 게임이 시작되면 각 플레이어는 카드 장을 받고, 플레이어 이 먼저 턴을 시작합니다. 한 턴에서 플레이어는 다른 플레이어에게 특정 카드를 가지고 있는지 묻습니다. 질문을 받은 플레이어가 그 카드를 가지고 있으면 반드시 질문한 플레이어에게 건네야 하며, 질문한 플레이어는 턴을 이어서 아무 플레이어에게나 다른 카드를 묻습니다. 질문을 받은 플레이어가 그 카드를 가지고 있지 않으면 질문한 플레이어는 턴을 잃고, 질문을 받은 플레이어가 턴을 시작합니다. 중요한 규칙은 질문하는 플레이어가 요청하는 카드와 같은 세트의 카드를 이미 한 장 이상 가지고 있어야 한다는 것입니다.
자신의 턴에 플레이어가 손에 완성된 세트("quartet")를 가지고 있으면, 그 플레이어는 다른 플레이어에게 이를 보여 주고 옆에 치운 뒤 1점을 얻을 수 있습니다. 완성된 세트의 카드 4장은 현재 게임에서 영구적으로 제거됩니다. 어떤 시점에든 카드가 한 장도 남지 않은 플레이어는 게임에서 떠납니다. 그 플레이어의 턴이었다면, 턴은 아직 카드를 가진 플레이어 중 순서상 다음 플레이어(플레이어 -----)에게 넘어갑니다. 모든 플레이어가 카드를 잃으면 게임이 끝나고, 점수가 가장 높은 플레이어가 승자로 선언됩니다.
플레이어는 게임에서 제거된 카드를 요청할 수 없으며, 게임을 떠난 플레이어에게서 카드를 요청할 수도 없습니다.
Quartets에서 부정행위는 플레이어가 특정 카드를 가지고 있다고(또는 가지고 있지 않다고) 거짓으로 주장하는 두 가지 상황에서 일어날 수 있습니다. 구체적으로 다음 중 하나라도 해당하면 부정행위입니다.
- 플레이어가 해당 세트의 카드를 한 장도 가지고 있지 않으면서 카드를 요청하는 경우
- 카드를 요청받은 플레이어가 요청받은 카드를 가지고 있으면서 가지고 있지 않다고 주장하는 경우
부정행위는 대개 나중에 드러납니다. 이론적으로는 주의 깊은 상대가 결국 모든 부정행위를 알아챌 수 있는데, 게임이 끝나기 전에 모든 카드가 결국 공개되기 때문입니다.
요청받은 플레이어가 도저히 가지고 있을 수 없는 카드를 요청하는 것(예를 들어 요청한 플레이어가 자기 손에 이미 그 카드를 들고 있는 경우)은 현명한 수는 아니지만, 그 자체로 부정행위로 보지는 않습니다.
입력
입력의 첫 줄에는 정수 ()이 주어집니다. 이는 Quartets 게임 한 판의 처음부터 시작하여 연속된 행동의 수입니다. 이어지는 개의 줄에는 각각 행동 하나가 적혀 있습니다. 행동은 다음 중 하나입니다.
x A y sk yes: 플레이어 가 플레이어 에게 카드 를 요청하고, 플레이어 는 그 카드를 에게 건넵니다.x A y sk no: 플레이어 가 플레이어 에게 카드 를 요청하고, 플레이어 는 그 카드가 없다고 주장한 뒤 자신의 턴을 시작합니다.x Q s: 플레이어 가 세트 의 완성된 세트를 옆에 치웁니다.
모든 행동에서 와 (, )는 플레이어를 나타내는 정수이고, ()는 세트에 대응하는 한 자리 정수입니다. A,B,C,D는 한 세트 안의 카드 4장을 구별하는 문자입니다. 카드 는 1A, 1B, 1C, 1D, 2A, 2B, ..., 8C, 8D로 표시됩니다. 앞자리 숫자가 같은 카드 4장이 하나의 세트를 이룹니다.
주어진 행동 순서는 4명의 플레이어가 진행한 유효한 게임을 나타냅니다. 위에서 언급한 두 가지 부정행위 가능성을 제외하면, 모든 행동은 규칙을 모두 따릅니다.
출력
카드의 초기 분배가 존재하여 행동 순서가 모든 플레이어가 규칙을 따르는 (부분적일 수도 있는) 게임에 해당할 수 있으면 yes를 출력합니다. 그렇지 않으면 no를 출력하고, 이어서 누군가 부정행위를 했다고 확실히 말할 수 있게 되는 첫 번째 행동의 번호를 한 줄에 출력합니다. 행동은 1부터 순서대로 번호가 매겨지며, 완성된 세트를 치우는 행동도 번호에 포함됩니다.