记录编号 |
39124 |
评测结果 |
WWWWWWWWWW |
题目名称 |
绘画 |
最终得分 |
0 |
用户昵称 |
CC |
是否通过 |
未通过 |
代码语言 |
C++ |
运行时间 |
0.862 s |
提交时间 |
2012-07-05 12:30:56 |
内存使用 |
6.53 MiB |
显示代码纯文本
#include <cstdio>
#include <algorithm>
struct question {
int type;
int x1,x2,y1,y2,c;
}task[100005];
int n,m,K,tot;
char order[10],save[100005];
int a[1005][1005];
void work(int u) {
if (u == 0) return;
if (task[u].type == 3) {
work(save[task[u].c]);
return;
}
else if (task[u].type == 2) {
work(u - 1);
return;
}
else if (task[u].type == 1) {
work(u - 1);
int x1 = task[u].x1,x2 = task[u].x2,y1 = task[u].y1,y2 = task[u].y2;
for (int i = x1;i <= x2;i++)
for (int j = y1;j <= y2;j++)
if ((((i - x1) % 2) + ((j - y1) % 2)) % 2) continue;
else a[i][j] = task[u].c;
return;
}
}
int main() {
freopen("drawing.in","r",stdin);
freopen("drawing.out","w",stdout);
scanf("%d%d%d", &n, &K, &m);
tot = 0;
for (int i = 0;i < n;i++)for (int j = 0;j < n;j++) a[i][j] = 1;
for (int i = 1;i <= m;i++) {
scanf("%s",order);
if (order[0] == 'P') {
task[i].type = 1;
scanf("%d%d%d%d%d\n", &task[i].c, &task[i].x1, &task[i].y1, &task[i].x2, &task[i].y2);
}
else if (order[0] == 'S') {
task[i].type = 2;
task[i].c = ++tot;
save[tot] = i;
}
else if (order[0] == 'L') {
task[i].type = 3;
scanf("%d\n", &task[i].c);
}
}
work(m);
for (int i = 0;i < n;i++) {
for (int j = 0;j < n;j++) printf("%d ", a[i][j]);
printf("\n");
}
return 0;
}