Atenţie! Aceasta este o versiune veche a paginii, scrisă la 2013-04-09 07:29:29.
Revizia anterioară   Revizia următoare  
Bad macro "include(page="template/taskheader" task_id="spider") == !problema/spider?poza.jpg! Omul păianjen (Spiderman) sare de pe o clădire pe alta, aflată în imediata vecinătate, în nord, est, sud sau vest. Clădirile din cartierul omului păianjen au o înălţime exprimată în numere naturale şi sunt aşezate pe $m$ rânduri, câte $n$ pe fiecare rând. Spiderman va alege să sară pe una dintre clădirile vecine, care are înălţimea mai mică sau egală, iar diferenţa de înălţime este minimă. Dacă există mai multe clădiri vecine de aceeaşi înălţime, omul păianjen aplică ordinea preferenţială nord, est, sud, vest, dar nu sare încă o dată pe o clădire pe care a mai sărit. Scopul omului păianjen este acela de a reuşi să facă un număr maxim de sărituri succesive. h2. Cerinţă Scrieţi un program care determină numărul maxim de sărituri succesive, pe care îl poate efectua, pornind de la oricare dintre clădiri, precum şi poziţiile clădirilor care formează drumul maxim. h2. Date de intrare Fişierul de intrare $spider.in$ conţine, pe prima linie, două numere naturale, $m$ şi $n$, despărţite printr-un spaţiu. Fiecare dintre următoarele $m$ rânduri conţine $n$ numere naturale, separate prin câte un spaţiu, reprezentând înălţimile clădirilor. h2. Date de ieşire În fişierul de ieşire $spider.out$ va conţine, pe prima linie, un singur număr natural $k$, reprezentând numărul maxim de sărituri. Următoarele $k$ linii vor conţine câte două numere naturale, separate printr-un spaţiu, reprezentând coordonatele clădirilor care formează drumul maxim, în ordinea parcurgerii. Dacă există mai multe soluţii, în fişierul de ieşire se va scrie drumul care porneşte de la poziţia $(i, j)$ cu $i$ minim, iar dacă există mai multe soluţii cu acelaşi $i$ minim, se va scrie în fişier soluţia cu $i$ şi $j$ de valoare minimă. h2. Restricţii * $0 < m, n ≤1000$ * Înălţimile clădirilor sunt numere naturale din intervalul $[1,10 000 000]$ * În orice zonă pătratică de $2x2$ clădiri vecine există cel mult $2$ clădiri de aceeaşi înălţime. h2. Exemplu table(example). |_. spider.in |_. spider.out | | 5 5 35 38 42 40 50 34 38 30 75 50 70 78 88 86 30 39 90 88 23 25 35 80 89 90 34 | 8 5 4 5 3 4 3 3 3 3 4 2 4 2 5 1 5 1 4 | h3. Explicaţie Spiderman porneşte de pe blocul de $90$ de metri aflat în poziţia $(5, 4)$, face $8$ sărituri şi ajunge în poziţia $(1, 4)$, de unde nu mai are posibilităţi de a sări. == include(page="template/taskfooter" task_id="spider")"