记录编号 |
452646 |
评测结果 |
AAAAAAAAAA |
题目名称 |
失落的猴子 |
最终得分 |
100 |
用户昵称 |
KingSann |
是否通过 |
通过 |
代码语言 |
C++ |
运行时间 |
3.217 s |
提交时间 |
2017-09-19 22:40:50 |
内存使用 |
31.45 MiB |
显示代码纯文本
#include <iostream>
#include <algorithm>
#include <cstdio>
#include <cstring>
#include <cstdlib>
#include <cassert>
using namespace std;
#define FN "lostmonkey"
const int N = 1010;
struct SEG {
int val[N * 4], tag[N * 4];
void push(int id) {
if(tag[id]) {
tag[id << 1] = tag[id];
tag[id << 1 | 1] = tag[id];
val[id] = tag[id];
tag[id] = 0;
}
}
void change(int id, int L, int R, int l, int r, int v) {
push(id);
int M = (L + R) >> 1;
if(l <= L && R <= r) {
tag[id] = v;
} else if(L > r || R < l) {
return;
} else {
change(id << 1, L, M, l, r, v);
change(id << 1 | 1, M + 1, R, l, r, v);
}
}
int ask(int id, int L, int R, int pos) {
push(id);
int M = (L + R) >> 1;
if(L == R && L == pos) {
return val[id];
} else if(L > pos || R < pos) {
return 0;
} else {
return max(ask(id << 1, L, M, pos), ask(id << 1 | 1, M + 1, R, pos));
}
}
} seg[N];
int n, m, k;
int main() {
freopen(FN ".in", "r", stdin);
freopen(FN ".out", "w", stdout);
scanf("%d%d%d", &n, &m, &k);
for(int i = 1 ; i <= n ; i ++) {
seg[i].change(1, 1, m, 1, m, 1);
}
for(int i = 1, x1, y1, x2, y2, v ; i <= k ; i ++) {
scanf("%d%d%d%d%d", &x1, &y1, &x2, &y2, &v);
for(int j = x1 ; j <= x2 ; j ++) {
seg[j].change(1, 1, m, y1, y2, v + 1);
}
}
for(int i = 1 ; i <= n ; i ++) {
for(int j = 1 ; j <= m ; j ++) {
printf("%d", seg[i].ask(1, 1, m, j) - 1);
}
puts("");
}
}