Cerința
Capitala imperiului este protejată de un zid de formă dreptunghiulară formată din n*m
cărămizi dispuse pe n
linii și m
coloane, linia 1
fiind cea mai de sus, iar linia n
fiind cea mai de jos. Fiecare cărămidă este alcătuită dintr-o substanță identificată printr-un număr natural nenul.
Cuceritorul Gigel are la dispoziție o armă specială, care poate fi programată să distrugă toate cărămizile din zid care sunt formate din aceeași substanță, cunoscută, la o singură tragere. După fiecare tragere, toate cărămizile care sunt situate deasupra celor distruse cad, până ajung pe o cărămidă din zid, sau la baza acestuia.
Solicitarea lui Gigel este să determinați structura zidului după un număr dat de trageri, k
.
Date de intrare
Programul citește de la tastatură numerele n m k
, iar apoi n
șiruri cu câte m
numere naturale, reprezentând cărămizile de pe fiecare linie. Apoi se vor citi k
numere naturale, reprezentând, în ordine, substanța din care sunt alcătuite cărămizile afectate de tragerea curentă.
Date de ieșire
Programul va afișa pe ecran n
șiruri cu câte m
numere naturale, separate prin exact un spațiu, reprezentând configurația zidului după cele k
trageri. Cărămizile distruse vor fi precizate prin numărul 0
.
Restricții și precizări
1 ≤ n, m ≤ 100
1 ≤ k ≤ 100
- substanțele din care sunt create cărămizile sunt identificate prin numere naturale nenule mai mici decât
1000
- dacă la o anumită tragere nu există în zid cărămizi de tipul utilizat la acea tragere, zidul rămâne nemodificat
Exemplu
Intrare
4 5 3 3 5 4 5 1 2 1 1 5 3 1 1 5 5 1 5 5 1 4 3 1 5 1
Ieșire
0 0 0 0 0 0 0 0 0 0 3 0 0 0 3 2 0 4 4 3
Explicație
După prima tragere, zidul devine:
0 0 0 5 0 3 0 0 5 0 2 5 4 5 3 5 5 5 4 3
După a doua tragere, zidul devine:
0 0 0 0 0 0 0 0 0 0 3 0 0 0 3 2 0 4 4 3
A treia tragere nu mai modifică zidul.
#include <bits/stdc++.h> using namespace std; int main() { int n , m , k , a[1001][1001] , x; cin >> n >> m >> k; for(int i = 1 ; i <=n ; ++i) for(int j = 1 ; j <= m; ++j) cin >> a[i][j]; for(int p = 1 ; p <= k ; ++p) { cin >> x; for(int i = 1 ; i <=n ; ++i) for(int j = 1 ; j <= m; ++j) if(a[i][j]==x) { for(int l = i ; l > 1 ; l--) a[l][j]=a[l-1][j]; a[1][j]=0; } } for(int i = 1 ; i <=n ; ++i) { for(int j = 1 ; j <= m; ++j) cout << a[i][j] << " "; cout << endl; } }