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");
}
}