ConcursC++17

spider

Omul păianjen (Spiderman) sare de pe o clădire pe alta, aflată în imediata vecinătate, în nord, est, sud sau vest.

Figura 1 din enunțul original al problemei spider.Figura 1 din enunțul original al problemei spider.Mărește schema ↗

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

  • 1≤m,n≤1 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.

Sursă și autori

ONI 2013, clasele 9. Budai István.

Enunț din Kilonova, sub licența CC-BY-NC-SA-4.0, conform politicii sursei. Adaptări de prezentare și tipografie. Exemplele, formulele și figurile originale sunt păstrate.

RÂNDUL TĂU

Trimite o soluție

Editor de cod

Setul original de teste și regulile de punctare sunt în curs de verificare. Trimiterea pentru evaluare va fi disponibilă după această verificare.

Se verifică autentificarea…

Un pas, apoi următorul.Înapoi sus ↑