Atenţie! Aceasta este o versiune veche a paginii, scrisă la 2008-06-07 15:20:42.
Revizia anterioară   Revizia următoare  

 

Fişierul intrare/ieşire:iepuras.in, iepuras.outSursăONI 2008, clasa a 9-a
AutorCarmen PopescuAdăugată degabitzish1Gabriel Bitis gabitzish1
Timp execuţie pe test0.025 secLimită de memorie20480 kbytes
Scorul tăuN/ADificultateN/A

Vezi solutiile trimise | Statistici

Iepuras

Un iepuras se gaseste intr-o gradina plina de surprize. Harta gradinii poate fi reprezentata sub forma unei table dreptunghiulare cu m linii, numerotate de la 1 la m de sus in jos, si n coloane, numerotate de la 1 la n de la stanga la dreapta. In fiecare celula a acestei gradini se poate gasi cel mult una dintre urmatoarele surprize: sageata, pom, zid, trapa, morcov, bomba.

O sageata indica una din directiile nord, sud, est, vest. Odata ajuns intr-o celula continand o astfel de sageata iepurasul isi va continua deplasarea in sensul indicat de sageata, iar aceasta dispare.

Intr-o celula in care se gaseste un pom sau un zid iepurasul nu poate sa patrunda, insa daca se "loveste" de un pom, el isi pastreaza directia, insa schimba sensul (daca se deplasa spre nord, isi va schimba sensul spre sud, daca se deplasa spre est, se va deplasa dupa aceea spre vest etc).

Daca iepurasul intra intr-o celula continand o trapa, toate zidurile aflate pe teren dispar si vor aparea alte ziduri, in pozitii precizate. Daca iepurasul va trece din nou printr-o celula continand o trapa, zidurile nou construite dispar si vor reaparea zidurile initiale. Mai exact exista doua grupe de ziduri care comuta la fiecare trecere printr-o celula care contine o trapa.

Daca iepurasul va trece de doua ori prin vecinatatea unei celule continand o bomba (adica prin celulele invecinate la sud, nord, est sau vest cu celula continand bomba), bomba va exploda iar iepurasul se transforma instantaneu in ingeras. De asemenea, daca iepurasul intra intr-o celula continand o bomba se transforma instantaneu in ingeras. Iepurasul va rontai toti morcovii care ii ies in cale. Evident ca daca trece a doua oara prin aceeasi celula, la a doua trecere nu va mai gasi morcov.

Surprizele din gradina sunt codificate astfel: 1 pentru sageata spre nord, 2 pentru sageata spre vest, 3 pentru sageata spre sud, 4 pentru sageata spre est, 5 pentru pom, 6 pentru bomba, 7 pentru morcov, 8 pentru zid, 9 pentru trapa. Casutele libere de pe harta gradinii se codifica cu 0.

Initial, se cunosc pozitia si sensul de deplasare ale iepurasului. Expeditia acestuia se termina in urmatoarele situatii:

  • la explozia unei bombe, caz in care se transforma in ingeras;
  • la parasirea gradinii (adica la iesirea in afara zonei dreptunghiulare date), caz in care se rataceste;
  • in momentul in care reuseste sa rontaie toti morcovii, caz in care este fericit.

Cerinta

Fiind data harta gradinii se cere sa se determine starea finala a iepurasului (ingeras, ratacit respectiv fericit), numarul de morcovi rontaiti pana in momentul terminarii expeditiei, precum si numarul de pasi pe care ii face iepurasul pana la acest moment.

Date de intrare

Pe prima linie a fisierului de intrare iepuras.in se gasesc doua numere intregi m si n, separate printr-un spatiu, reprezentand numarul de linii, respectiv numarul de coloane ale hartii.
Linia a doua a fisierului contine trei numere naturale, separate prin cate un spatiu, reprezentand linia si coloana pozitiei initiale a iepurasului pe harta precum si directia spre care acesta este orientat. Directia este codificata astfel: 1 pentru nord, 2 pentru vest, 3 pentru sud, 4 pentru est.
Urmatoarele m linii contin cate n numere intregi separate prin cate un spatiu, reprezentand codificarea hartii gradinii, conform celor precizate mai sus.
Urmatoarea linie contine un singur numar natural t reprezentand numarul de celule ce vor contine ziduri dupa prima trecere printr-o celula continand o trapa. Urmatoarele t linii contin cate doua numere naturale i si j, separate printr-un spatiu, reprezentand coordonatele cate unei celule ce va contine zid dupa o prima trecere printr-o celula continand o trapa.

Date de iesire

Fisierul de iesire iepuras.out va contine pe prima sa linie unul dintre cuvintele INGERAS, RATACIT respectiv FERICIT, corespunzator starii finale a iepurasului. A doua linie a fisierului va contine doua numere intregi separate printr-un spatiu, reprezentand linia si coloana ultimei pozitii de pe teren a iepurasului, adica pozitia in care a murit, sau in care a devenit fericit, respectiv ultima pozitie a sa de pe teren, inainte de a se rataci.
A treia linie a fisierului va contine doua numere intregi separate printr-un spatiu, reprezentand numarul de morcovi culesi pana in momentul terminarii expeditiei, respectiv numarul de pasi pe care ii face iepurasul pana ajunge in starea finala.

Restrictii

  • Pozitia initiala a iepurasului este una valida, adica este o celula libera din interiorul terenului;
  • Pentru datele de test, se asigura ca iepurasul va face un numar finit de pasi pana la terminarea expeditiei sale;
  • 1 ≤ m, n ≤ 200
  • 0 ≤ t ≤ 20
  • Numarul maxim de ziduri aflate la un moment dat pe teren este de cel mult 50, si este posibil ca la un moment dat sa nu existe niciun zid pe teren.
  • Se garanteaza ca pentru datele de intrare iepurasul nu poate ajunge simultan in doua din cele trei stari.
  • Pomii si trapele sunt obiecte care raman permanent in teren, in pozitiile lor initiale.
  • Intr-o celula a gradinii se poate gasi la un moment dat o singura surpriza (pom, zid, trapa, morcov, sageata, bomba).

Exemplu

iepuras.iniepuras.out
10 15
7 1 4
0 0 6 0 5 5 0 7 0 0 0 0 0 0 0
0 0 0 0 5 5 0 0 4 0 0 0 0 0 3
0 5 5 0 5 5 0 0 0 0 0 0 0 0 0
0 5 5 0 5 5 0 1 7 0 0 7 0 0 2
0 0 0 0 5 5 0 0 0 0 0 0 0 0 0
0 0 0 0 0 5 0 0 0 0 0 0 0 0 0
0 3 0 0 0 5 6 0 0 5 5 5 0 0 0
0 7 0 0 0 0 0 0 0 0 0 0 0 5 0
0 4 0 0 0 7 0 0 3 5 0 0 0 5 0
0 6 0 0 0 0 0 0 1 5 0 0 0 5 0
0
FERICIT
1 8
5 37
4 3
2 1 3
0 0 0
0 0 0
9 6 7
8 0 0
4
4 3
1 2
1 3
2 3
RATACIT
4 1
0 3
6 5
2 1 3
0 0 0 7 0
0 0 0 0 0
9 6 7 2 0
8 0 0 0 0
7 8 0 0 0
4 8 9 1 0
4
4 4
5 4
1 5
2 5
INGERAS
3 3
2 11
5 4
2 1 3
4 0 7 0
0 0 0 0
0 0 0 0
5 0 0 0
0 0 0 0
0
FERICIT
1 3
1 5
Trebuie sa te autentifici pentru a trimite solutii. Click aici

Cum se trimit solutii?