#include "wall.h"
#include <bits/stdc++.h>
using namespace std;
const int maxn = 1e6 + 5;
int stl[4 * maxn], str[4 * maxn], res[maxn];
void app(int i, int xl, int xr) {
stl[i] = min(max(stl[i], xl), xr);
str[i] = min(max(str[i], xl), xr);
}
void push(int id){
app(id * 2, stl[id], str[id]);
app(id * 2 + 1, stl[id], str[id]);
stl[id] = 0;
str[id] = 1e5;
}
void update(int u, int v, int xl, int xr, int id, int l, int r){
if(l > v || r < u) return;
if(u <= l && r <= v) app(id, xl, xr);
else{
int mid = (l + r) / 2;
push(id);
update(u, v, xl, xr, id * 2, l, mid);
update(u, v, xl, xr, id * 2 + 1, mid + 1, r);
}
}
void build(int id, int l, int r){
if(l == r) res[l] = stl[id];
else{
int mid = (l + r) / 2;
push(id);
build(id * 2, l, mid);
build(id * 2 + 1, mid + 1, r);
}
}
void buildWall(int n, int k, int op[], int l[], int r[], int h[], int ans[]) {
for(int i = 0; i < k; i++) update(l[i], r[i], op[i] ^ 2 ? h[i] : 0, op[i] ^ 1 ? h[i] : 1e5, 1, 0, n - 1);
build(1, 0, n - 1);
for(int i = 0; i < n; i++) ans[i] = res[i];
}
/*
signed main(){
ios_base::sync_with_stdio(false);
cin.tie(0); cout.tie(0);
int n, k; cin >> n >> k;
while(k--){
int op, l, r, h; cin >> op >> l >> r >> h;
update(l, r, op ^ 2 ? h : 0, op ^ 1 ? h : 1e5, 1, 0, n - 1);
}
build(1, 0, n - 1);
} */
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |