patratele

Time limit: 1s Memory limit: 64MB Input: patratele.in Output: patratele.out

Gigel are în fața sa pe o foaie de matematică un desen obținut prin trasarea mai multor linii orizontale și verticale de lungime 11 de-a lungul modelului foii de matematică.

Gigel a învăţat de la colegii mai mari un joc, care se joacă în doi: delimitează pe foaia de matematică o zonă dreptunghiulară, apoi, pe rând, trag cu creionul câte o linie pe o latură a unui pătrăţel. Cel care reuşeşte să formeze cele mai multe pătrăţele câştigă. Ochii lui Gigel sunt obişnuiţi să vadă imediat o problemă de matematică, chiar dacă se joacă.

Privind desenul de pe foaie el se întreabă: “Oare câte pătrate s-au format din liniile trasate?”

În desenul alăturat se vede foaia formată din 33 linii şi 55 coloane, precum şi liniile trasate până la un moment dat. Se pot distinge trei pătrate de latură 11, două pătrate de latură 22 şi un pătrat de latură 33.

În problema noastră vom codifica fiecare pătrat de latură 11 de pe foaie cu un număr natural cuprins între 00 şi 1515 obținut prin însumarea codificării fiecărei laturi astfel:

  • 11 – dacă latura de sus este trasată
  • 22 – dacă latura din dreapta este trasată
  • 44 – dacă latura de jos este trasată
  • 88 – dacă latura din stânga este trasată

Apoi se face suma codificărilor laturilor pentru a afla codificarea fiecărui pătrățel. În acest fel desenul alăturat poate fi codificat printr-un tablou bidimensional de dimensiuni 353 \cdot 5 cu valorile:

9 7 15 13 7
14 15 11 15 11
1 3 12 7 14

Cerință

Fiind date dimensiunile nn şi mm ale foii de matematică, precum şi tabloul bidimensional de dimensiune nmn \cdot m care conține codificarea foii, să se determine:

  • numărul total de pătrate existente pe foaia de matematică în desenul realizat conform codificării
  • distribuția numărului de pătrate în ordinea strict crescătoare a lungimii laturilor
  • unde poate fi trasată încă o linie astfel încât numărul total de pătrate să crească și să devină maxim posibil

Date de intrare

Fişierul de intrare patratele.in conţine pe prima linie trei numere naturale n m tn \ m \ t, separate prin câte un spaţiu, indicând dimensiunile foii de matematică nmn \cdot m, respectiv cerinţa care trebuie rezolvată (1,21, 2 sau 33). Fiecare dintre următoarele nn linii conţine câte mm numere naturale, fiecare dintre acestea reprezentând codificarea foii de matematică.

Date de ieșire

Fișierul de ieșire patratele.out va conține următoarele în funcție de cerința cerută:

  • Dacă t=1t = 1, pe prima linie numărul total de pătrate determinat;
  • Dacă t=2t = 2, pe fiecare linie vor fi afișate câte două numere naturale nenule aa și bb, separate printr-un spaţiu, indicând lungimea laturii pătratelor (aa), respectiv numărul de pătrate cu latura de lungimea respectivă (bb), în ordinea strict crescătoare a valorilor lui aa;
  • Dacă t=3t = 3, prima linie va conține numărul maxim de pătrate, iar linia a doua va conține două valori naturale lin,collin, col și un cuvânt pozpoz separate printr-un spațiu, unde lin,collin, col reprezintă coordonatele pătratului de latură 11 unde se trasează linia suplimentară, iar poz{poz \in \{SUS,, DREAPTA,, JOS,, STANGA,, NU}\} (se va afișa NU în cazul în care nu se poate trasa nicio linie — în acest caz cele trei valori numerice afișate vor fi de asemenea 00).

Restricții și precizări

  • Numerotarea liniilor și coloanelor foii de matematică începe de la 11.
  • Dacă la cerința t=3t=3 se obțin mai multe poziții de trasare a liniei, se va afișa soluția cu indicele liniei minim, iar în caz de egalitate după linii, se va afișa soluția cu indicele coloanei minim. În cazul în care există mai multe posibilități de trasare a unei linii în același pătrat, pozițiile vor fi luate în ordinea SUS, DREAPTA, JOS, STANGA.
  • 1n,m601 \leq n, m \leq 60
  • Pentru 3030 de puncte, t=1t = 1.
  • Pentru 3030 de puncte, t=2t = 2.
  • Pentru 1010 puncte, t=3t = 3 și 1n,m201 \leq n, m \leq 20.
  • Pentru 3030 de puncte, t=3t = 3.

Exemplul 1

patratele.in

3 5 1
9 7 15 13 7
14 15 11 15 11
1 3 12 7 14

patratele.out

6

Explicație

Se rezolvă cerința 11. În total au fost găsite 66 pătrate

Exemplul 2

patratele.in

3 5 2
9 7 15 13 7
14 15 11 15 11
1 3 12 7 14

patratele.out

1 3
2 2
3 1

Explicație

Se rezolvă cerința 22.

33 pătrate de latură 11
22 pătrate de latură 22
11 pătrat de latură 33

Exemplul 3

patratele.in

3 5 3
9 7 15 13 7
14 15 11 15 11
1 3 12 7 14

patratele.out

9
2 5 JOS

Explicație

Se rezolvă cerința 33. Dacă se trasează încă o linie la pătratul din linia 22 coloana 55 jos, se mai obțin încă 33 pătrate.

Exemplul 4

patratele.in

3 3 3
9 1 3
8 0 2
12 0 0

patratele.out

0
0 0 NU

Explicație

Se rezolvă cerința 33. Nu se poate adăuga niciun pătrat nou prin trasarea unei singure linii.

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