tetris

Time limit: 0.2s Memory limit: 64MB Input: tetris.in Output: tetris.out

Cerință

Jocul nostru de tetris se desfășoară pe o tablă dreptunghiulară în care piesele “cad” de la linia 11. La un moment dat unele celule ale tablei sunt ocupate, altele sunt libere, și urmează să “cadă” o nouă piesă.

Din păcate tastele s-au blocat și jucătorul nu mai poate muta piesa sau să o “întoarcă”. Efectiv aceasta cade până atinge partea de jos a tablei sau o parte a sa ajunge imediat deasupra unei celule ocupate. Dacă atunci când piesa se oprește se întâmplă ca una sau mai multe linii să ajungă complet din celule ocupate, aceste linii dispar iar celulele de deasupra acestor linii se translatează în jos pe aceeași coloană, fiecare celulă translatându-se cu numărul de linii cât reprezintă valoarea celor dispărute de sub ea.

Dată fiind configurația tablei și piesa care “cade” să se determine modul în care arată tabla după căderea piesei.

Se garantează că la configurația dată a tablei (înainte de căderea piesei) nu sunt linii cu toate celulele ocupate.

Sunt două tipuri de piese, ambele formate din hh celule ocupate:

  • Tipul 11 (hh celule ocupate aflate una sub alta):

  • Tipul 22 (h1h-1 celule ocupate aflate una sub alta, iar imediat în dreapta celulei de sus mai este încă o ceulă ocupată):

Piesele cad exact pe mijlocul tablei. Dacă lățimea tablei (mm) este impară “cade” o piesă de tipul 11, iar dacă lățimea este pară “cade” o piesă de tipul 22.

Date de intrare

Pe prima linie a fișierului tetris.in se află trei numere nn, mm și hh, separate prin spațiu, reprezentând respectiv: numărul de linii, numărul de coloane ale tablei dreptunghiulare, precum și numărul de celule pe care le ocupă o piesă, așa cum este descris mai sus.
Pe fiecare din următoarele nhn-h linii se află câte mm valori ce pot fi 00 sau 11 (11 înseamnă celulă ocupată). Aceste valori sunt separate prin câte un spațiu. Considerăm că deasupra acestor nhn-h linii mai sunt încă hh linii fără nicio poziție ocupată.

Date de ieșire

Fișierul tetris.out va conține configurația tablei de joc fără liniile complet goale de deasupra (fiecare linie afișată va avea câte mm elemente 00 sau 11, separate prin câte un spațiu).

Restricții și precizări

  • 1n1 0001 \leq n \leq 1 \ 000;
  • 2m1 0002 \leq m \leq 1 \ 000;
  • 2hn12 \leq h \leq n-1;
  • Pentru 5151 de puncte avem mm par;
  • Se garantează că pe tablă rămâne la final cel puțin o celulă ocupată.

Exemplu

tetris.in

9 4 5
1 0 0 0
1 0 1 1
1 0 1 1
1 1 0 1

tetris.out

0 1 1 0
1 1 0 0
1 1 0 1

Explicație

Suntem pe cazul cu mm par, piesa este de tipul 22 și cade pe coloanele din mijloc, 22 și 33.

Ne imaginăm tabla de joc astfel (hh linii libere sus):

0 0 0 0
0 0 0 0
0 0 0 0
0 0 0 0
0 0 0 0
1 0 0 0
1 0 1 1
1 0 1 1
1 1 0 1

Căzând, piesa se oprește astfel:

0 0 0 0
0 0 0 0
0 0 0 0
0 0 0 0
0 1 1 0
1 1 0 0
1 1 1 1
1 1 1 1
1 1 0 1

Penultimele două linii devin pline cu 11 și dispar.
Cele 44 linii rămase pline cu 00 deasupra nu se mai tipăresc.

0 0 0 0
0 0 0 0
0 0 0 0
0 0 0 0
0 1 1 0
1 1 0 0
1 1 0 1

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