Maria a primit cadou un joc. Jocul are o tablă sub formă de caroiaj dreptunghiular format din pătrăţele de latură dispuse în linii şi coloane. Pătrăţelele conţin primele numere naturale nenule începând cu , reprezentând coduri. Codificarea se face astfel: se începe cu valoarea din pătrăţelul din stânga-jos, se continuă cu valorile de la stânga la dreapta, continuă pe rândul următor de la dreapta la stânga şi aşa mai departe. În acest fel ultimul pătrăţel va fi codificat întotdeauna cu valoarea , ca în exemplul din dreapta.
Jocul constă în plasarea unui jeton în colţul din stânga jos şi trebuie să se ducă jetonul dincolo de pătrăţelul codificat cu valoarea în urma mutărilor realizate. Pentru efectuarea unei mutări, el aruncă mai întâi un zar. Dacă acesta arată valoarea şi jetonul se află în pătrăţelul cu codul , jetonul va fi dus în pătrăţelul cu codul . Dacă , jocul se termină. În caz contrar, există situaţii în care jetonul nu va rămâne neapărat în noua poziţie, întrucât în unele poziţii ale caroiajului sunt indicatoare care precizează unde trebuie dus jetonul care tocmai a ajuns în acea poziţie.
Un pătrăţel poate să conţină cel mult un indicator. Indicatoarele sunt de tipuri: pentru primele tipuri se precizează peste câte poziţii se va plasa jetonul din poziţia curentă, respectiv: pe aceeaşi linie la dreapta , în diagonală pe direcţia dreapta-sus , pe aceeaşi coloană în sus , pe diagonală pe direcţia stânga-sus , pe aceeaşi linie la stânga , pe diagonală pe direcţia stânga-jos , pe aceeaşi coloană în jos , în diagonală pe direcţia dreapta-jos . Indicatorul de tipul precizează codul unui pătrăţel în care va fi plasat jetonul.
La aplicarea unui indicator se respectă regulile:
a) dacă jetonul iese în afara tablei, acest indicator va fi neglijat, iar jetonul va rămâne pe loc (jocul nu se poate termina astfel).
b) dacă se ajunge într-un pătrăţel care conţine un alt indicator, acesta nu va mai fi luat în considerare.
Cerinţă
Cunoscând, în ordine, cele valori obţinute în urma aruncărilor cu zarul, să se determine dacă jocul se poate încheia. În caz afirmativ se va afişa numărul de aruncări cu zarul după care jocul se încheie. În caz contrar, se va afişa poziţia jetonului după cele mutări.
Date de intrare
Fişierul de intrare zar.in
conţine pe prima linie două numere şi reprezentând numărul de linii, respectiv numărul de coloane ale tablei de joc. Pe linia a -a se găseşte un număr natural reprezentând numărul de pătrăţele în care se găsesc indicatoare. Pe următoarele linii se găsesc câte numere naturale separate prin câte un spaţiu reprezentând descrierea câte unui indicator. Primul număr este codul pătrăţelului în care este pus indicatorul, al doilea număr este tipul de indicator. Dacă tipul de indicator este , al treilea număr semnifică codul pătrăţelului unde va fi trimis jetonul. Dacă al doilea număr este din mulţimea , al treilea număr reprezintă numărul de poziţii de pe tablă peste care se va muta jetonul în direcţia precizată. Pe linia următoare se află un număr natural reprezentând numărul de aruncări cu zarul. Pe următoarea linie sunt numere naturale separate prin câte un spaţiu, reprezentând, în ordine, valorile obţinute după fiecare aruncare.
Date de ieşire
Fişierul de ieşire zar.out
va conţine pe prima linie două numere naturale separate printr-un spaţiu. Dacă jocul se termină, prima valoare va fi , iar a doua va reprezenta numărul de mutări după care s-a terminat. Dacă jocul nu se termină, prima valoare va fi , iar a doua codul pătrăţelului unde a rămas jetonul.
Restricţii şi precizări
- Valorile obţinute în urma aruncărilor cu zarul sunt numere din mulţimea ;
- Numărul de poziţii cu care se poate deplasa jetonul pentru un indicator de tip de la la este număr întreg nenul
Exemplu
zar.in
3 4
4
3 2 1
8 1 1
7 1 2
9 9 11
4
2 1 2 2
zar.out
2 11
Explicaţie
Iniţial jetonul este în pătrăţelul . După prima mutare el ajunge în pătrăţelul (zarul arată şi jetonul ar ajunge în pătrăţelul dar indicatorul de acolo în trimite în pătrăţelul 5). După mutarea a doua jetonul ajunge în pătrăţelul (acolo îl trimite zarul şi nu este întâlnit un indicator). După mutarea a treia, jetonul ajunge în pătrăţelul (zarul îl trimite în , iar indicatorul de acolo în – acum nu se ţine cont de indicatorul din ). După mutarea jetonul ajunge la pătrăţelul (după aruncarea cu zarul trebuia dus în iar indicatorul de acolo îl trimite în ).