Domnul Gigi i-a cumpărat fiului său un joc de construcţii. Jocul este compus dintr-o tablă pătrată N x N (N linii şi N coloane) şi un număr de C cuburi colorate. Latura cubului este egală cu latura unui pătrat al tablei. Gigi junior aşează fiecare cub pe tablă, într-o ordine dată, suprapunând perfect o faţă a cubului peste pătratul dorit. Dacă la o anumită poziţie există deja cuburi atunci cubul se aşează deasupra celor existente. Jocul se termină când toate cuburile sunt aşezate pe tablă.
Domnul Gigi vede jocul în forma finală şi priveşte tabla din trei poziţii. Imaginea rezultată poate fi vedere de sus, vedere din stânga sau vedere din faţă.
Exemplu: pentru N=3, C=7 şi o aşezare a cuburilor ca în figura a), cele trei vederi sunt desenate în figurile:
Cerinţă
Să se realizeze un program care determină o vedere a tablei.
Date de intrare
Fişierul de intrare cuburi2.in conţine:
Pe prima linie trei numere naturale N C D, separate prin câte un spaţiu cu următoarea semnificaţie: N - dimensiunea tablei, C - numărul cuburilor, D -direcţia din care privim tabla (1 - vedere de sus, 2 - vedere din stânga, 3 - vedere din faţă ).
Pe următoarele C linii se găsesc câte trei numere naturale. Astfel, pe linia i+1 se află numerele Lin Col Culoare, separate prin spaţiu, reprezentând linia, coloana şi respectiv culoarea celui de-al i-lea cub care se plasează pe tablă.
Date de ieşire
Fişierul de ieşire cuburi2.out va conţine un tablou bidimensional cu NL linii şi N coloane reprezentând vederea tablei, conform direcţiei citite din fişierul de intrare.
Pe prima linie a fişierului se vor afişa cele două dimensiuni NL şi N separate prin spaţiu, iar pe următoarele NL linii câte N numere reprezentând codurile culorilor cuburilor vizibile, respectiv 0 (zero) pentru zonele fără cuburi.
Restricţii
1 <= N <= 50
1 <= C <= 50000
Nu sunt mai mult de 20 de cuburi suprapuse;
Culoarea unui cub este codificată printr-un număr între 1 şi 15;
Întotdeauna se pot plasa pe tablă toate cuburile date;
Fiecare linie din fişierele de intrare şi ieşire se termină prin marcaj de sfârşit de linie;
Exemple
cuburi2.in
cuburi2.out
Explicaţii
3 7 2
1 1 3
1 1 1
3 2 2
1 3 1
1 3 2
1 3 1
1 3 3
4 3
3 0 0
1 0 0
1 0 0
3 0 2
Cel mai mare turn de cuburi se afla în poziţia (1,3) şi are înălţimea 4. Privind din partea stângă a tablei, din acest turn se văd doar ultimele două cuburi, restul fiind ascunse vederii de turnul din 2 cuburi de la poziţia (1,1).
Pe “coloana” 2 nu există cuburi, deci vom completa cu 0.
Pe coloana 3 se vede doar cubul din poziţia (3,2), în rest completăm cu 0 pâna la înălţimea maximă.