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.