placare

Time limit: 0.05s Memory limit: 4MB Input: placare.in Output: placare.out

O suprafaţă dreptunghiulară de înălţime NN şi lăţime MM unităţi trebuie acoperită perfect (placată) prin utilizarea unor plăci de formă dreptunghiulară de dimensiune 1×P1 \times P sau P×1P \times 1, unde PP este un număr natural nenul. Suprafaţa dată poate fi privită ca un caroiaj cu N×MN \times M pătrăţele egale cu unitatea.

O placare corectă a suprafeţei iniţiale se memorează într-un fişier text folosind următoarele convenţii de codificare:

  • Pe prima linie se precizează dimensiunile NN şi MM ale suprafeţei;
  • O placă dreptunghiulară de laţime PP este codificată prin numărul natural PP, iar o placă de înalţime PP se codifică prin numărul întreg P–P;
  • Convenim că placa având ambele dimensiuni egale cu unitatea să se codifice cu valoarea 11;
  • Pe fiecare din cele NN linii ale codificării se află câte un şir de valori întregi reprezentând, în ordine de la stânga la dreapta, codurile plăcilor care se găsesc amplasate începând de la respectiva linie;
  • Codul PP strict mai mare ca 11 al unei plăci orizontale apare o singură dată pe linia corespunzătoare pe care se află placa, iar codul P–P al unei plăci verticale va apare o singură dată şi anume pe prima linie de la care placa respectivă este amplasată în jos pe o anumită coloană a suprafeţei;
  • Dacă pe o anumită linie a suprafeţei nu există astfel de coduri de plăci, atunci pe respectiva linie din fişier este o singură valoare de 00.


Folosind codificarea unei placări a suprafeţei iniţiale, se poate determina imaginea acestei placări sub forma unui tablou bidimensional AA, cu NN linii şi MM coloane, unde Ai,jA_{i,j} reprezintă valoarea absolută a codului plăcii care se suprapune peste pătrăţelul de pe linia ii şi coloana jj.

Cerinţă

Cunoscând codificarea unei placări corecte a suprafeţei date să se obţină imaginea acestei placări (matricea de valori corespunzătoare codificării suprafeţei).

Date de intrare

Fişierul de intrare placare.in are următoarea structură:

  • pe prima linie valorile naturale NN și MM, separate printr-un spaţiu, unde NN este înălţimea suprafeţei și MM este lăţimea suprafeţei.
  • pe fiecare din următoarele NN linii se află un şir de valori întregi, separate prin câte un spaţiu, reprezentând codificarea respectivei linii a placării.

Date de ieşire

În fişierul de ieşire placare.out se va tipări tabloul bidimensional ce reprezintă imaginea placării, compus din NN linii, pe fiecare dintre ele aflându-se MM valori naturale separate prin câte un spaţiu, cu semnificaţia din enunţ.

Restricţii şi precizări

  • 1N,M3001 \leq N,M \leq 300
  • Pentru 80%80\% din teste, 1N,M1001 \leq N,M \leq 100;
  • Dimensiunea PP sau P–P a unei plăci este aleasă astfel încât acoperirea obţinută să nu depăşească înălţimea NN sau lățimea MM a suprafeţei.
  • Datele din fişierul de intrare sunt corecte în sensul că reprezintă codificarea unei acoperiri a zonei dreptunghiulare de dimensiuni NN şi MM.

Exemplul 1

placare.in

4 4
-4 1 1 1
1 2
2 1
3

placare.out

4 1 1 1
4 1 2 2
4 2 2 1
4 3 3 3

Explicație

Valoarea 4-4 codifică o placă de înălţime 44 şi lăţime 11 plasată începând din pătratul de coordonate (1,1)(1,1) şi până în pătratul de coordonate (4,1)(4,1).
Valoarea 33 de pe ultima linie a codificării desemnează o placă de lăţime 33 şi înălţime 11, plasată orizontal, începând din pătrăţelul de coordonate (4,2)(4,2).

Exemplul 2

placare.in

3 2
-3 -2
0
1

placare.out

3 2
3 2
3 1

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