Proaspăt scăpat de conflictele sale cu poliţia, Gigel vrea să organizeze o excursie la munte. El a descoperit o suprafaţă dreptunghiulară de metri lăţime şi metri lungime, împărţită în suprafeţe pătratice elementare de latură şi cu laturile paralele cu laturile suprafeţei. Pentru simplitate, ne vom referi la ea ca la o matrice notată cu având linii (numerotate de la la ) şi coloane (numerotate de la la ). Pentru fiecare pătrat se cunoaşte înălţimea la care acesta se află.
Dintr-un pătrat , Gigel se poate deplasa, în interiorul suprafeţei, în oricare din pătratele: , , , , în cazul în care acestea există. Un drum valid în viziunea lui Gigel este un drum care pleacă din orice pătrat şi are proprietăţile:
- înălţimea fiecărui pătrat prin care trece, satisface relaţia: ( fiind o constantă dată);
- pătratul în care drumul se termină (denumit destinaţie finală), are înălţimea mai mare sau egală cu înălţimea pătratului .
Cerinţă
Să se scrie un program care să-l ajute pe Gigel să afle, pentru fiecare pătrat iniţial, câte destinaţii finale distincte există pentru drumurile valide care pornesc din acel pătrat.
Date de intrare
Fişierul de intrare mexc.in
conţine pe prima linie trei numere naturale , separate prin câte un spaţiu, cu semnificaţia din enunţ. Fiecare dintre următoarele linii vor conţine câte numere naturale, separate prin câte un spaţiu, reprezentând valorile elementelor matricei .
Date de ieșire
Fişierul de ieşire mexc.out
va conţine linii pe care se vor scrie câte numere naturale, separate prin câte un spaţiu, numărul de pe linia din fişierul mexc.out
reprezentând numărul de destinaţii finale distincte care pot fi atinse pe drumuri valide ce pornesc din pătratul .
Restricții și precizări
- Destinaţia finală poate să coincidă cu punctul de plecare. Un drum format dintr-un singur pătrăţel este considerat valid.
Exemplu
mexc.in
5 6 2
7 7 7 7 7 7
7 3 3 3 3 7
7 3 5 6 3 7
7 3 3 3 3 7
7 7 7 7 7 10
mexc.out
18 18 18 18 18 18
18 30 30 30 30 18
18 30 20 1 30 18
18 30 30 30 30 18
18 18 18 18 18 1
Explicație
Pentru pătrăţelele de înălţime destinaţia finală poate fi orice pătrăţel de înălţime şi pătrăţelul de înălţime .
Pentru pătrăţelele de înălţime destinaţia finală poate fi orice pătrăţel.
Pentru pătrăţelul de înălţime destinaţia finală poate fi orice pătrăţel mai puţin cele de înălţime .
Pentru pătrăţelul de înălţime destinaţia finală poate fi doar el însuşi (nu poate trece prin pătrăţelele de înălţime datorită primei restricţii)
Pentru pătrăţelul de înălţime destinaţia finală poate fi doar el însuşi.