Remi - Državno (2015)


Submit solution

Points: 90 (partial)
Time limit: 3.0s
Memory limit: 64M

Author:
Problem type
Allowed languages
Assembly, Awk, C, C++, Java, Perl, Python

DRŽAVNO NATJECANJE 2015. – Prvi dan natjecanja / Srednja škola, II. podskupina (3. i 4. razred) - 3. zadatak

Mirko i Slavko igraju Remi - popularnu kartašku igru za djecu i odrasle. Svaka karta je označena sa:

  • rangom - brojem između 1 i 13
  • bojom - jednim od slova ‘K’, ‘H’, ‘T’ ili ‘P’.

Oznaka karte je niz od dva ili tri znaka koji se dobije spajanjem ranga i boje.

Njihova inačica igre se igra s dva špila od 52 karte.

Dakle u igri su na raspolaganju točno 104 karte - za svaki rang i boju postoje točno dvije takve karte.

Glavni dio igre je polaganje grupe karata na stol. Položiti se smije samo grupa koju čini

  • tri ili više karata istog ranga (takozvani red) ili
  • tri ili više karata iste boje te uzastopnih rangova (takozvana skala).

Tako su na primjer (7K, 8K, 9K, 10K) i (5H, 5H, 5T) dvije grupe karata koje se smiju položiti.

Mirko u svakom dijeljenju dobije neki niz karata te ih želi što više položiti.

Naravno, položene karte moraju biti organizirane u grupe prema pravilima igre te jedna karta može biti u najviše jednoj grupi.

Napišite program koji za svako dijeljenje pronalazi jedan način da se položi najveći broj karata.

Ulazni​ podaci

U prvom redu nalazi se prirodni broj, M (1 ≤ M ≤ 10) - broj dijeljenja.

U svakom od sljedećih M redova nalazi se najprije prirodni broj N (1 ≤ N ≤ 104) - broj karata koji je Mirko dobio te oznake N karata odvojenih s točno jednim razmakom.

Oznaka svake karte je niz od dva ili tri znaka kao u tekstu zadatka.

Izlazni podaci

Potrebno je ispisati M redova. Za svako dijeljenje najprije je potrebno ispisati najveći broj karata K koji Mirko može položiti, a zatim u istom redu i oznake K karata koje Mirko polaže.

Karte trebaju biti organizirane u grupe, a znak ‘|’ (vertikalna crta, ASCII 124) odvaja grupe.

Svaka grupa karata mora biti red ili skala. Grupe i karte unutar grupe mogu biti poredane proizvoljnim redoslijedom.

Svi elementi u liniji (broj K, oznake karata, vertikalna crta) moraju biti odvojeni s po jednim razmakom.

Napomena: Rješenje ne mora biti jedinstveno.

Primjeri test​ podataka

Ulaz
4
8 5T 7K 3H 8K 9K 5H 5H 10K
7 5T 7K 3H 8K 9K 6H 2P
4 1K 2P 3P 4K
11 10K 11K 10H 10K 9K 2T 7H 9P 8H 10T 8P
Izlaz
7 7K 8K 9K 10K | 5H 5H 5T
3 7K 8K 9K
0
6 9K 10K 11K | 10K 10H 10T

Comments

There are no comments at the moment.