#include "wall.h"
#include<bits/stdc++.h>
using namespace std;
#define ll long long int
#define MOD (1000000000+7)
#define MOD1 (998244353)
#define pb push_back
#define all(x) x.begin(), x.end()
#define en cout << '\n'
#define ff first
#define ss second
#define pii pair<int,int>
#define vi vector<int>
const int N = 1e7+100, M = 1e5+10, K = 52, MX = 30;
int L[N], R[N], T[N];
void build(int l, int r, int k){
L[k] = 0;
R[k] = MOD;
if(l == r){
return;
}
int m = l+r>>1;
build(l, m, k<<1);
build(m+1, r, k<<1|1);
}
void push(int k){
if(L[k] > R[k<<1]){
R[k<<1] = L[k<<1] = L[k];
}else if(R[k] < L[k<<1]){
R[k<<1] = L[k<<1] = R[k];
}else{
R[k<<1] = min(R[k<<1], R[k]);
L[k<<1] = max(L[k<<1], L[k]);
}
if(L[k] > R[k<<1|1]){
R[k<<1|1] = L[k<<1|1] = L[k];
}else if(R[k] < L[k<<1|1]){
R[k<<1|1] = L[k<<1|1] = R[k];
}else{
R[k<<1|1] = min(R[k<<1|1], R[k]);
L[k<<1|1] = max(L[k<<1|1], L[k]);
}
L[k] = 0;
R[k] = MOD;
}
void upd(int l, int r, int ql, int qr, int k, bool tp, int val){
if(ql > r || l > qr) return;
if(ql <= l && r <= qr){
if(l != r) push(k);
else{
if(tp == 0){
L[k] = min(L[k], val);
R[k] = min(R[k], val);
}else{
L[k] = max(L[k], val);
R[k] = max(R[k], val);
}
return;
}
if(tp == 0){ // min
R[k] = val;
}else{
L[k] = val;
}
return;
}
push(k);
int m = l+r>>1;
upd(l, m, ql, qr, k<<1, tp, val);
upd(m+1, r, ql, qr, k<<1|1, tp, val);
}
int get(int l, int r, int p, int k){
if(l == r){
return L[k];
}
push(k);
int m = l+r>>1;
if(p <= m) return get(l, m, p, k<<1);
return get(m+1, r, p, k<<1|1);
}
void buildWall(int n, int k, int op[], int left[], int right[], int height[], int finalHeight[]){
build(0, n - 1, 1);
for(int i = 0; i < k; ++i){
int tp = op[i];
upd(0, n - 1, left[i], right[i], 1, 1-(tp-1), height[i]);
}
for(int i = 0; i < n; ++i){
finalHeight[i] = get(0, n-1, i, 1);
}
return;
}
# | 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... |