Pe vremea mea toţi copiii erau pasionaţi de Piticot. Tabla de joc este frumos colorată şi are pe ea marcat un traseu cu anumite puncte cheie marcate prin cerculeţe, numerotate de la la în ordinea de pe traseu. Fiecare jucător are un pion, iar la începutul jocului toţi pionii sunt plasaţi pe cerculeţul de start (cerculeţul cu numărul ). Scopul jocului este ca pionul tău să ajungă primul în cerculeţul final (cel care are numărul ).
Jucătorii mută alternativ. Când îi vine rândul, jucătorul dă cu zarurile obţinând astfel un număr aleator, apoi mută pionul său înainte cu un număr de cerculeţe egal cu numărul aleator obţinut. Dacă numărul aleator este mai mare decât numărul de cerculeţe până la cerculeţul final, pionul se opreşte în cerculeţul final.
Anumite cerculeţe de pe traseu au asociate anumite acţiuni (de exemplu, Fă doi paşi înapoi!, Fă un pas înainte!, Mai dă o dată cu zarul!). Când ajunge pe un cerculeţ cu o acţiune asociată jucătorul trebuie să execute acţiunea respectivă. Cerculeţul de start şi cel final nu au nici o acţiune asociată.
Pentru a afla numerele aleatoare obţinute de jucători atunci când dau cu zarul, vom utiliza un generator de numere aleatoare care are ca parametri numerele naturale şi . Generatorul produce o secvenţă de numere naturale după următoarea regulă: (unde semnifică restul împărţirii întregi), pentru În timpul jocului se utilizează în ordine numerele aleatoare ( nu este utilizat în joc).
Cerinţă
Scrieţi un program care, cunoscând tabla de joc, parametrii generatorului de numere aleatoare şi numărul de jucători, să determine cine va fi câştigătorul jocului (cine ajunge primul în cerculeţul final).
Date de intrare
Fişierul de intrare piticot.in
conţine pe prima linie numere naturale separate prin spaţiu reprezentând parametrii generatorului de numere aleatoare. Pe cea de a doua linie se află două numere naturale separate prin spaţiu , reprezentând numărul de jucători, iar numărul de cerculeţe de pe traseul de pe tabla de joc.
Considerăm că jucătorii sunt numerotaţi de la la . Pe următoarele linii sunt descrise în ordine acţiunile asociate cerculeţelor , câte o acţiune pe o linie, sub forma a două numere naturale separate prin spaţiu.
Dacă şi pionul ajuns în acest cerculeţ va avansa cu cerculeţe (dacă este mai mare decât numărul de cerculeţe existente până la cerculeţul final, pionul va rămâne în cerculeţul final).
Dacă şi atunci pionul ajuns în acest cerculeţ va merge înapoi cu cerculeţe (dacă este mai mare decât numărul de cerculeţe existente până la cerculeţul de start, pionul va fi plasat în cerculeţul de start).
Dacă şi , jucătorul trebuie să mai dea o dată cu zarul (adică pionul său va avansa cu următorul număr aleator din secvenţa de numere aleatoare generată).
Dacă atunci şi şi înseamnă că cerculeţul corespunzător nu are nici o acţiune asociată. poate avea doar valorile şi .
Date de ieşire
Fişierul de ieşire piticot.out
va conţine două linii; pe prima linie va fi scris un numărul jucătorului care câştigă jocul, iar pe cea de a doua linie numărul total de mutări efectuate în joc (ori de câte ori un pion este ridicat de pe tablă se consideră că s-a efectuat o mutare).
Restricţii şi precizări
- Se garantează că jocul se termină.
Exemplu
piticot.in
1 1 100 1
2 6
0 0
1 -3
1 0
1 1
piticot.out
2
4
Explicație
. Secvenţa de numere aleatoare generată este:
Iniţial toţi pionii jucătorilor sunt în cerculeţul . Primul jucător dă cu zarul, obţine valoarea şi avansează în cerculeţul (mutare ). Deoarece acest cerculeţ are asociată o acţiune, jucătorul trebuie să execute acţiunea respectivă (se întoarce în cerculeţul de start - mutare ). Este rândul jucătorului , acesta dă cu zarul, obţine valoarea , ajunge în cerculeţul (mutare ), care are asociată o acţiune (jucătorul trebuie să mai dea o dată cu zarul, obţine valoarea , avansează în cerculeţul final - mutare - şi câştigă jocul).