QOJ.ac

QOJ

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

#8688. Kuartet

Statistics

Anda sedang menonton sekelompok anak bermain Quartets dengan santai dan gembira. Pada suatu saat, Anda mulai curiga bahwa beberapa anak mungkin curang. Anak-anak itu sendiri tampaknya sama sekali tidak terganggu. Sebaliknya, hal ini justru membuat mereka makin senang, terutama ketika seseorang tertangkap curang. Sebagai pemrogram, Anda langsung memikirkan cara mendeteksi kecurangan hanya dengan mengamati permainan mereka.

Quartets adalah permainan kartu untuk empat pemain yang memakai $32$ kartu, dibagi menjadi $8$ kelompok berisi $4$ kartu. Kartu sebenarnya sering memuat gambar edukatif yang membantu pemain mengenal objek sekaligus klasifikasinya. Misalnya, kartu dapat bergambar hewan, sementara kelompoknya sesuai dengan berbagai golongan hewan (mamalia, reptil, dan sebagainya).

problem_8688_c012c73f8edd38ed2a0cf5aef1ad487e.jpg

Empat kartu dalam satu kelompok, dari dek Quartets Jerman karya Wilhelm Busch melalui Wikimedia Commons, domain publik.

Pada awal permainan, setiap pemain mendapat $8$ kartu dan pemain $1$ memulai giliran. Dalam setiap giliran, seorang pemain bertanya kepada pemain lain apakah ia memiliki kartu tertentu. Jika pemain yang ditanya memilikinya, ia harus menyerahkannya kepada peminta, yang melanjutkan giliran dengan meminta kartu lain kepada pemain mana pun. Jika pemain yang ditanya tidak memilikinya, giliran peminta berakhir dan pemain yang ditanya memulai gilirannya. Aturan penting menyatakan bahwa peminta harus sudah memiliki setidaknya satu kartu dari kelompok yang sama dengan kartu yang diminta.

Jika pada gilirannya seorang pemain memiliki satu kelompok lengkap («kuartet»), ia boleh memperlihatkannya kepada pemain lain, menyisihkannya, dan memperoleh satu poin. Keempat kartu kuartet itu dihapus secara permanen dari permainan saat ini. Jika kapan pun seorang pemain kehabisan kartu, ia meninggalkan permainan. Jika itu gilirannya, giliran beralih ke pemain berikutnya dalam urutan $1$-$2$-$3$-$4$-$1$-$\ldots$ yang masih memiliki kartu. Jika tidak ada pemain yang memiliki kartu, permainan berakhir dan pemain dengan poin terbanyak menang.

Pemain tidak boleh meminta kartu yang telah dihapus dari permainan, atau meminta kartu kepada pemain yang telah meninggalkan permainan.

Kecurangan dalam Quartets dapat terjadi dalam dua situasi ketika pemain berbohong tentang memiliki (atau tidak memiliki) kartu. Secara khusus, kecurangan terjadi jika

  • pemain meminta kartu meskipun tidak memiliki satu pun kartu dari kelompok yang bersangkutan, atau

  • pemain yang ditanya mengaku tidak memiliki kartu yang diminta padahal memilikinya.

Tentu saja, kecurangan sering baru diketahui belakangan. Secara teori, lawan yang jeli akhirnya dapat mengetahui semua kecurangan, karena semua kartu pada akhirnya terungkap pada suatu waktu sebelum permainan selesai.

Meminta kartu yang mustahil dimiliki pemain yang ditanya (misalnya karena ada di tangan peminta sendiri) memang bukan langkah cerdas, tetapi tindakan itu sendiri tidak dianggap curang.

Masukan

Baris pertama berisi bilangan bulat $n$ ($1 \le n \le 1000$), jumlah aksi berturut-turut dalam satu permainan Quartets sejak awal permainan. Masing-masing dari $n$ baris berikutnya menjelaskan satu aksi. Setiap aksi ditulis dalam satu baris dan dapat berupa salah satu berikut:

  • x A y sk yes — pemain $x$ meminta kartu $sk$ kepada pemain $y$, dan pemain $y$ menyerahkannya kepada pemain $x$;

  • x A y sk no — pemain $x$ meminta kartu $sk$ kepada pemain $y$, pemain $y$ mengaku tidak memilikinya dan memulai giliran;

  • x Q s — pemain $x$ menyisihkan kuartet $s$.

Dalam semua aksi, $x$ dan $y$ ($1 \le x,y \le 4$, $x \ne y$) adalah bilangan bulat yang menyatakan pemain; $s$ ($1 \le s \le 8$) adalah bilangan bulat satu digit yang menyatakan kelompok/kuartet; dan $k \in \{\mathrm{A},\mathrm{B},\mathrm{C},\mathrm{D}\}$ adalah karakter yang membedakan empat kartu dalam satu kelompok. Jadi kartu $sk$ diberi label 1A, 1B, 1C, 1D, 2A, 2B, …, 8C, 8D. Empat kartu dengan digit pertama sama membentuk satu kelompok.

Urutan yang diberikan menjelaskan permainan valid antara empat pemain. Artinya, selain dua kemungkinan kecurangan tadi, semua aksi memenuhi semua aturan.

Keluaran

Jika ada pembagian awal kartu yang memungkinkan urutan aksi itu menjadi permainan (mungkin sebagian) dengan semua pemain mengikuti aturan, keluarkan yes. Jika tidak, keluarkan no, lalu pada baris berikutnya nomor aksi pertama yang setelahnya dapat dipastikan ada pemain yang telah curang. Aksi diberi nomor berurutan mulai dari $1$; aksi menyisihkan kuartet juga dihitung.

Contoh

Masukan 1

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

Keluaran 1

no
4

Penjelasan

Pemain $1$ dan $2$ sama-sama mengaku tidak memiliki 3C, dan keduanya tidak memiliki 3A atau 3D. Jadi salah satu dari mereka berbohong tentang tidak memiliki 3C, atau meminta 3C tanpa memiliki 3B (satu-satunya kartu tersisa dari kelompok $3$).

Masukan 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

Keluaran 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.