== include(page="template/taskheader" task_id="zar2") ==
Maria a primit cadou un joc. Jocul are o tablă sub formă de caroiaj dreptunghiular format din pătrățele de latură 1 dispuse în L linii și C coloane. Pătrățelele conțin primele L*C numere naturale nenule începând cu 1, reprezentând coduri. Codificarea se face astfel: se începe cu valoarea 1 din pătrățelul din stânga-jos, se continuă cu valorile 2,3,...C 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 L*C, 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 L*C în urma mutărilor realizate. Pentru efectuarea unei mutări, el aruncă mai întâi un zar. Dacă acesta arată valoarea Z și jetonul se află în pătrățelul cu codul P, jetonul va fi dus în pătrățelul cu codul P+Z. Dacă P+Z>L*C, 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.
4 3 2
5 X 1
6 7 8
Un pătrățel poate să conțină cel mult un indicator. Indicatoarele sunt de 9 tipuri: pentru primele 8 tipuri se precizează peste câte poziții se va plasa jetonul din poziția curentă, respectiv: pe aceeași linie la dreapta(1), în diagonală pe direcția dreapta-sus(2), pe aceeași coloană în sus(3), pe diagonală pe direcția stânga-sus(4), pe aceeași linie la stânga(5), pe diagonală pe direcția stânga-jos(6), pe aceeași coloană în jos(7), în diagonală pe direcția dreapta-jos(8). Indicatorul de tipul 9 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 K 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 K mutări.
Date de intrare
Fișierul zar.in conține pe prima linie două numere L și C reprezentând numărul de linii, respectiv numărul de coloane ale tablei de joc. Pe linia a 2-a se găsește un număr natural I reprezentând numărul de pătrățele în care se găsesc indicatoare. Pe următoarele I linii se găsesc câte 3 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 9, al treilea număr semnifică codul pătrățelului unde va fi trimis jetonul. Dacă al doilea număr este din mulțimea {1, 2, 3, 4, 5, 6, 7, 8}, 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 K reprezentând numărul de aruncări cu zarul. Pe următoarea linie sunt K 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 zar.out va conține pe prima linie două numere naturale separate printr-un spațiu. Dacă jocul se termină, prima valoare va fi 1, iar a doua va reprezenta numărul de mutări după care s-a terminat. Dacă jocul nu se termină, prima valoare va fi 2, iar a doua codul pătrățelului unde a rămas jetonul.
Restricții și precizări:
• 1 ≤ L, C ≤ 50; 0 ≤ I ≤ L*C;
• 1 ≤ K ≤ 1000;
• Valorile obținute în urma aruncărilor cu zarul sunt numere din mulțimea {1, 2, 3, 4, 5, 6};
• Numărul de poziții cu care se poate deplasa jetonul pentru un indicator de tip 1-8 este număr întreg nenul ≤ 50;
Poveste și cerință...
h2. Date de intrare
Fișierul de intrare $zar2.in$ ...
h2. Date de ieșire
În fișierul de ieșire $zar2.out$ ...
h2. Restricții
* $... ≤ ... ≤ ...$
h2. Exemplu
table(example).
|_. zar2.in |_. zar2.out |
| 3 4
4
3 2 1
8 1 1
7 1 2
9 9 11
4
2 1 2 2
| 2 11
| This is some
text written on
multiple lines.
| This is another
text written on
multiple lines.
|
h3. Explicație
Inițial jetonul este în pătrățelul 1. După prima mutare el ajunge în pătrățelul 5 (zarul arată 2 și jetonul ar ajunge în pătrățelul 3 dar indicatorul de acolo în trimite în pătrățelul 5). După mutarea a doua jetonul ajunge în pătrățelul 6 (acolo îl trimite zarul și nu este întâlnit un indicator). După mutarea a treia, jetonul ajunge în pătrățelul 7 (zarul îl trimite în 8, iar indicatorul de acolo în 7 – acum nu se tine cont de indicatorul din 7). După mutarea 4 jetonul ajunge la pătrățelul 11 (după aruncarea cu zarul trebuia dus în 9 iar indicatorul de acolo îl trimite în 11).
...
== include(page="template/taskfooter" task_id="zar2") ==