Submission

Status:
PPPPPPPPPP

Score: 100

User: admin

Problemset: G.Peach's Backpack

Language: cpp

Time: 0.155 second

Submitted On: 2024-10-13 22:56:03

#include <bits/stdc++.h>

using namespace std;

int N,M, Q;
char a[1005][1005];
int h[1005] = {0};
int s[1000005]={0};
int sp = 0;
int main() {
	scanf("%d%d",&N,&M);
	scanf("%d", &Q);
	bool no = true;
	char cur = 'A';
	for (int i=1; i<=M; i++) for(int j=1;j<=N;j++) a[j][i] = '.';
	for (int i=1; i<=Q; i++) {
		int l,w,k;
		scanf("%d%d%d", &w, &l, &k);
		
		if (k+w-1 > N) {
			no = false;
			s[sp++] = i;
			for (int i=0; i<l*w; i++) {
				cur++;
				if (cur > 'Z') cur = 'A';
			}
			continue;
		}
		
		int mx = -1;
		for (int j=k; j<k+w; j++) {
			mx = max(mx, h[j]);
		}
		if (mx+l > M) {
			no = false;
			s[sp++] = i;
			for (int i=0; i<l*w; i++) {
				cur++;
				if (cur > 'Z') cur = 'A';
			}
			continue;
		} else {
			for (int j=k; j<k+w; j++) {
				h[j] = mx+l;
			}
		}
		for (int ii=M-mx-l+1; ii<=M-mx; ii++) {
			for (int jj=k; jj<k+w; jj++) {
				a[jj][ii] = cur;
//				printf("%c %d %d\n", cur, jj, ii);
				cur++;
				if (cur > 'Z') cur = 'A';
			}
		}
	}
	if (no) printf("NO");
	else for (int i=0; i<sp; i++) printf("%d ", s[i]);
	printf("\n");
	for (int i=1; i<=M; i++) {
		for (int j=1; j<=N; j++) printf("%c", a[j][i]);
		printf("\n");
	}
}