Mistrzostwa Polski Szkół Średnich w Programowaniu Zespołowym 2024

2020-2022 2023 Regulations Schedule RODO info Ranking

Problem description


Karol, który został krupierem
(D)
Limit pamięci: 32 MB
Limit czasu: 1.00 s

Po dniu pełnym atrakcji w Dubaju Karol postanowił udać się do Las Vegas, gdzie jego rosnące zainteresowanie teorią prawdopodobieństwa i dysponowanie nienagannymi manierami skłoniły go do zostania krupierem.

Karol otwierał właśnie stół do gry w pokera, gdy przypomniał sobie, że z jednym z N graczy siedzących przy tym stole wiążą go zażyłości towarzyskie. By lekko dopomóc jego szczęściu, Karol postanowił, że “wytasuje” znajomemu strita przy rozdawaniu kart. Proces rozdawania kart w kasynie Karola jest maszynowy – krupier wkłada do maszyny talię kart, a ta samodzielnie rozdaje karty graczom. W maszynie jest już talia kart i teraz Karol zastanawia się, ile co najmniej zamian kart musi wykonać, by jego znajomy na pewno dostał strita. Przez zamianę kart rozumiemy wybranie dwóch kart z maszyny i włożenie pierwszej w miejsce drugiej i drugiej w miejsce pierwszej.

Strit to układ kart – pięć kart o następujących po sobie wartościach, przy czym karty nie mogą być wszystkie jednego koloru (strit tworzą np. karty 4, 5, 6, 7 w kolorze karo i 8 w kolorze trefl). As może być zarówno najwyższą kartą (strit 10 J Q K A), jak i najniższą (strit A 2 3 4 5), jednak zakazane jest tworzenie stritów, w których as ma podwójną rolę (np. K A 2 3 4).

Maszyna rozdaje karty w taki sposób, że gracz o numerze k otrzymuje k-tą, (N+k)-tą, (2N+k)-tą, (3N+k)-tą i (4N+k)-tą kartę z talii.

Znajomy Karola zawsze jest graczem nr 1.

Napisz program, który wczyta liczbę graczy i opis talii znajdującej się w maszynie, wyznaczy liczbę ręcznych zamian kart z talii wystarczającą do zapewnienia strita graczowi nr 1 i wypisze ją na standardowe wyjście.

Wejście

W pierwszym wierszu wejścia znajduje się jedna dodatnia liczba całkowita N, określająca liczbę graczy. W drugim wierszu wejścia znajdują się 52 opisy kolejnych kart z talii pooddzielane pojedynczymi odstępami.

Opis karty składa się z dwóch następujących bezpośrednio po sobie części: pierwsza to wartość oznaczana przez jeden spośród napisów A, K, Q, J, 10, 9, …, 2, natomiast druga to kolor oznaczany przez jeden spośród napisów s, h, c, d (spades, hearts, clubs, diamonds).

Wyjście

W pierwszym (jedynym) wierszu wyjścia powinna się znaleźć jedna nieujemna liczba całkowita oznaczająca minimalną liczbę zamian kart w talii potrzebnych do zagwarantowania graczowi nr 1 strita.

Ograniczenia

2 ≤ N ≤ 10, karty opisane na wejściu tworzą permutację talii.

Przykład

Dla czytelności drugi wiersz każdego zestawu danych został ręcznie podzielony. W zestawach danych, na których testowane są programy, zawsze są dokładnie dwa wiersze (jak opisano w sekcji Wejście).

Wejście Wyjście Wyjaśnienie
2
5c Jh 4c 9h 6c 5h 3s Qs 7d
Jc 9d 4s 2s 7h 6d 2d 7s As 
8s Ac 9c 6h 4d 8d 5s 8h Qd 
Kd 9s Kh 6s 10s Qh 2c 3h Ks 
5d 3d 10c Js Ah 8c Jd 10h 3c 
2h Kc Ad 7c Qc 4h 10d 
0

Gracz nr 1 ma strita (3s, 4c, 5c, 6c, 7d) bez potrzeby zamieniania kart.

Wejście Wyjście Wyjaśnienie
2
3h 2c 4h As 5c 9s 4c 6s 6d 
5d 5s Jh Jc 6h 9d 3s 7h Kh 
2h 10d 4d 10s Kc Qc 3c 8c Kd 
8h 7c 10c Jd Ah Js 9h 3d Qh 
Ad 10h 4s Qd 2d 8d 8s Qs 7s 
6c 5h Ks 9c 7d 2s Ac 
1

Po zamianie kart 2s i 4c, gracz nr 1 ma strita (2s, 3h, 4h, 5c, 6d).

Wejście Wyjście Wyjaśnienie
4
2s 2c 7c 6h Jd Qs 10s 9c Qd 
3c 9h 4c 10d 6d 8d 4h Kd Qh 
8h 5c Kh 7h 4s 5h Ac Kc Ks 
Js 6s 3h 2h Ah 9d Ad 5d 8c 
3s Jc As 3d 9s 5s Qc 10h 10c 
2d 7s 7d 4d 6c 8s Jh 
1

Po zamianie kart 2s i Ad, gracz nr 1 ma strita (10d, Jc, Qd, Kd, Ad).