#include #include #include using namespace std; const int N = 1000, M = 1000; char polje[N][M]; char blok[20][20]; int n,m,k; void prikazi(int n, int m) { for (int i = 0; i < n; i++) { cout << polje[i] << endl; } } void postavi(int h, int w, int x) { for (int i = 0; i < h; i++) { cin >> blok[i]; blok[i][w] = 0; } int ima_mjesta; int zadnji_valjani_y = -1; // iteriraj po svim visinama sve dok se ne može staviti blok for (int i = 0 ; i <= n-h; i++ ) { ima_mjesta = 1; // iteriraj po svim dijelovima bloka i usporedi da li // zvijezdice padaju u točke for (int py = 0; py < h; py++) { for (int px = 0; px < w; px++) { if (blok[py][px]=='*') { if (polje[i+py][px+x]!='.') { ima_mjesta = 0; break; } } if (!ima_mjesta) break; } } if (ima_mjesta==0) { break; } else { zadnji_valjani_y = i; } } // prepisi blok u polje, ali samo zvijezdice! if (zadnji_valjani_y >= 0) { for (int py = 0; py < h; py++) { for (int px = 0; px < w; px++) { if (blok[py][px]=='*') { polje[py+zadnji_valjani_y][px+x] = blok[py][px]; } } } } } int main () { cin >> n >> m >> k; for (int i = 0; i < n; i++) { memset(polje[i],'.',m); polje[i][m] = 0; } int h,w,x; for (int i = 0 ; i < k ; i++) { cin >> h >> w >> x; postavi(h,w,x); } prikazi(n,m); return 0; }