Skale


Submit solution

Points: 70 (partial)
Time limit: 1.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, I. podskupina (1. i 2. razred) - 2. zadatak

Mirko i Slavko igraju Skale - 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.

Dodatno se u špilu karata nalaze još tri joker karte označene velikim slovom ‘J’.

Dakle u igri je na raspolaganju točno 55 karata - točno jedna karta za svaku kombinaciju ranga i boje te tri jokera.

Za grupu karata koja ne sadrži niti jedan joker kažemo da je skala ako grupu čine četiri ili više karata iste boje te uzastopnih rangova. Tako su, na primjer, (8K, 7K, 9K, 10K) i (1H, 2H, 3H, 4H, 5H) skale.

Mirko u svakom dijeljenju dobije najviše 52 karte te ih želi što više položiti.

Položene karte moraju biti organizirane u grupe, a svaka grupa treba biti skala prema pravilima gore.

Prije nego što krene polagati karte Mirko mora svaki od jokera koje je dobio zamijeniti jednom kartom iz ostatka špila (među kartama koje nije dobio u dijeljenju) koja nije joker.

Naravno, nije moguće dva jokera zamijeniti istom kartom.

Napišite program koji za svako dijeljenje pronalazi jedan način da jokeri zamijene te da se nakon toga polože skale tako da bude položen najveći mogući broj karata.

Ulazni​ podaci

U prvom redu nalazi se prirodni broj, ( ) - broj dijeljenja.

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

Oznaka svake karte je niz od jednog, dva ili tri znaka kako je opisano u tekstu zadatka.

Izlazni podaci

Potrebno je ispisati redova.

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

Među ispisanim kartama ne smije biti jokera već umjesto njih treba ispisati karte kojima su zamijenjene.

Karte trebaju biti organizirane u skale, a znak ‘|’ (vertikalna crta, ASCII 124) odvaja skale. Skale i karte unutar skale mogu biti poredane proizvoljnim redoslijedom.

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

Napomena: Rješenje ne mora biti jedinstveno.

Primjeri test​ podataka

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


Comments

There are no comments at the moment.