QOJ.ac

QOJ

Time Limit: 2 s Memory Limit: 2048 MB Total points: 100

#8688. Квартеты

Statistics

Вы наблюдаете, как дети весело играют дружескую партию в Quartets. В какой-то момент вы начинаете подозревать, что некоторые из них жульничают. Самих детей это, похоже, совсем не беспокоит. Наоборот, им от этого ещё веселее, особенно когда кого-то ловят на жульничестве. Как программист, вы сразу начинаете думать, как выявлять жульничество, просто наблюдая за игрой.

Quartets — карточная игра для четырёх игроков с колодой из $32$ карт, разделённых на $8$ наборов по $4$ карты. На настоящих картах часто бывают обучающие изображения, позволяющие изучать не только отдельные объекты, но и их классификацию. Например, карты могут изображать животных, а наборы — соответствовать разным группам животных (млекопитающим, пресмыкающимся и т. д.).

problem_8688_c012c73f8edd38ed2a0cf5aef1ad487e.jpg

Четыре карты одного набора из немецкой колоды Quartets авторства Wilhelm Busch, через Wikimedia Commons, общественное достояние.

В начале каждому игроку раздают $8$ карт, и игрок $1$ начинает ход. Во время хода игрок спрашивает другого игрока, есть ли у него конкретная карта. Если она есть, тот обязан отдать её спрашивающему, который продолжает ход, запрашивая другую карту у любого игрока. Если её нет, ход спрашивающего заканчивается, и ходить начинает спрошенный игрок. Важное правило: спрашивающий должен уже иметь хотя бы одну карту из того же набора, что и запрашиваемая.

Если во время своего хода игрок держит полный набор («квартет»), он может показать его остальным, отложить и получить одно очко. Эти четыре карты навсегда удаляются из текущей игры. Если в любой момент у игрока заканчиваются карты, он выходит из игры. Если это был его ход, он переходит к следующему игроку по порядку $1$-$2$-$3$-$4$-$1$-$\ldots$, у которого ещё есть карты. Если карт не осталось ни у кого, игра заканчивается, и побеждает игрок с наибольшим количеством очков.

Нельзя запрашивать удалённые из игры карты или просить карту у игрока, который вышел из игры.

Жульничество в Quartets возможно в двух ситуациях, когда игрок ложно утверждает, что имеет (или не имеет) какую-либо карту. А именно, жульничество происходит, если

  • игрок запрашивает карту, хотя у него нет ни одной карты соответствующего набора, или

  • спрошенный игрок утверждает, что не имеет запрошенной карты, хотя она у него есть.

Разумеется, жульничество часто обнаруживается позже. Теоретически внимательный соперник в итоге может выявить любое жульничество, поскольку до окончания игры все карты в какой-то момент раскрываются.

Запрашивать карту, которой у спрошенного заведомо не может быть (например, потому что она в руке самого спрашивающего), не слишком разумно, но само по себе это не считается жульничеством.

Входные данные

Первая строка содержит целое число $n$ ($1 \le n \le 1000$) — количество последовательных действий в одной партии Quartets с начала игры. Каждая из следующих $n$ строк описывает одно действие. Действие занимает одну строку и может быть одним из следующих:

  • x A y sk yes — игрок $x$ запрашивает у игрока $y$ карту $sk$, и игрок $y$ передаёт её игроку $x$;

  • x A y sk no — игрок $x$ запрашивает у игрока $y$ карту $sk$, игрок $y$ утверждает, что её нет, и начинает свой ход;

  • x Q s — игрок $x$ откладывает квартет $s$.

Во всех действиях $x$ и $y$ ($1 \le x,y \le 4$, $x \ne y$) — целые числа, обозначающие игроков; $s$ ($1 \le s \le 8$) — однозначное целое число, обозначающее набор/квартет; а $k \in \{\mathrm{A},\mathrm{B},\mathrm{C},\mathrm{D}\}$ — символ, различающий четыре карты набора. Таким образом, карты $sk$ обозначаются 1A, 1B, 1C, 1D, 2A, 2B, …, 8C, 8D. Четыре карты с одинаковой первой цифрой образуют один набор.

Заданный список действий описывает допустимую игру четырёх игроков. То есть, кроме двух упомянутых возможных видов жульничества, все действия удовлетворяют всем правилам.

Выходные данные

Если существует возможная начальная раздача карт, при которой последовательность действий соответствует игре (возможно, частичной), где все соблюдают правила, выведите yes. Иначе выведите no, а в следующей строке — номер первого действия, после которого точно известно, что какой-то игрок жульничал. Действия нумеруются последовательно с $1$; откладывание квартета также считается действием.

Примеры

Входные данные 1

4
1 A 2 3C no
2 A 3 3A yes
2 A 4 3D yes
2 A 1 3C no

Выходные данные 1

no
4

Примечание

Игроки $1$ и $2$ оба утверждают, что не имеют 3C, и ни у одного не было 3A или 3D. Значит, один из них либо солгал об отсутствии 3C, либо запросил 3C, не имея 3B (единственной оставшейся карты набора $3$).

Входные данные 2

6
1 A 2 3C no
2 A 3 3A yes
2 A 4 3D yes
2 A 1 3B no
1 A 4 5B yes
1 Q 5

Выходные данные 2

yes

Discussions

About Discussions

The discussion section is only for posting: General Discussions (problem-solving strategies, alternative approaches), and Off-topic conversations.

This is NOT for reporting issues! If you want to report bugs or errors, please use the Issues section below.

Open Discussions 0
No discussions in this category.

Issues

About Issues

If you find any issues with the problem (statement, scoring, time/memory limits, test cases, etc.), you may submit an issue here. A problem moderator will review your issue.

Guidelines:

  1. This is not a place to publish discussions, editorials, or requests to debug your code. Issues are only visible to you and problem moderators.
  2. Do not submit duplicated issues.
  3. Issues must be filed in English or Chinese only.
Active Issues 0
No issues in this category.
Closed/Resolved Issues 0
No issues in this category.