| 比赛 | 
    20120705 | 
    评测结果 | 
    WWWWWWWWWW | 
    | 题目名称 | 
    绘画 | 
    最终得分 | 
    0 | 
    | 用户昵称 | 
    CC | 
    运行时间 | 
    0.000 s  | 
    | 代码语言 | 
    C++ | 
    内存使用 | 
    0.00 MiB  | 
    | 提交时间 | 
    2012-07-05 11:47:34 | 
显示代码纯文本
#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;
}