spider

Time limit: 0.5s Memory limit: 64MB Input: spider.in Output: spider.out

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 mm rânduri, câte nn 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.

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.

Date de intrare

Fișierul spider.in conține, pe prima linie, două numere naturale, mm și nn, despărțite printr-un spațiu. Fiecare dintre următoarele mm rânduri conține nn numere naturale, separate prin câte un spațiu, reprezentând înălțimile clădirilor.

Date de ieșire

Fișierul de ieșire spider.out va conține, pe prima linie, un singur număr natural kk, reprezentând numărul maxim de sărituri. Următoarele kk 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,ji, j) cu ii minim, iar dacă există mai multe soluții cu același ii minim, se va scrie în fișier soluția cu ii și jj de valoare minimă.

Restricții și precizări

  • 1m,n1 0001 \leq m, n \leq 1 \ 000;
  • Înălțimile clădirilor sunt numere naturale din intervalul [1,10 000 000][1, 10 \ 000 \ 000].
  • În orice zonă pătratică de 2×22 \times 2 clădiri vecine există cel mult 22 clădiri de aceeași înălțime.

Exemplu

spider.in

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

spider.out

8
5 4
5 3
4 3
3 3
3 4
2 4
2 5
1 5
1 4

Explicație

Spiderman pornește de pe blocul de 9090 de metri aflat în poziția (5,4)(5, 4), face 88 sărituri și ajunge în poziția (1,4)(1, 4), de unde nu mai are posibilități de a sări.

Log in or sign up to be able to send submissions!