== include(page="template/taskheader" task_id="cuburi3") ==
http://campion.edu.ro/arhiva/index.php?page=problem&action=view&id=648
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:
!>problema/cuburi3?cuburi3.gif!
!problema/cuburi3?fig.jpg!
h2. Cerinta
Să se realizeze un program care determină o vedere a tablei.
h2. Date de intrare
Fișierul de intrare $cuburi3.in$ ...
Fișierul de intrare $cuburi3.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ă.
h2. Date de ieșire
În fișierul de ieșire $cuburi3.out$ ...
Fișierul de ieșire $cuburi3.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.
h2. 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;
h2. Exemplu
table(example).
|_. cuburi3.in |_. cuburi3.out |
| This is some
text written on
multiple lines.
| This is another
text written on
multiple lines.
| 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
|
h3. Explicație
...
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ă.
== include(page="template/taskfooter" task_id="cuburi3") ==