This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include "wall.h"
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef pair<int, int> ii;
typedef vector<ll> vll;
typedef vector<int> vi;
typedef vector<ii> vii;
#define REP(a,b,c) for(int a=int(b); a<int(c); a++)
#define REV(a,b,c) for(int a=int(c-1); a>=int(b); a--)
#define RE(a,b) REP(a,0,b)
#define RE1(a,b) REP(a,1,b+1)
#define FOR(a,b) for(auto& a : b)
#define pb push_back
#define fi first
#define se second
#define all(a) a.begin(), e.end()
const int MX = 1e5;
const int N = (1<<21);
int seglb[N*2], segub[N*2];
void buildSeg(int p=1, int l=0, int r=N-1) {
seglb[p] = 0;
segub[p] = 0;
if(l == r) return;
int m=(l+r)/2;
buildSeg(p*2,l,m);
buildSeg(p*2+1,m+1,r);
}
void applyRegion(int p, int lb, int ub) {
seglb[p] = min(seglb[p], ub);
segub[p] = min(segub[p], ub);
seglb[p] = max(seglb[p], lb);
segub[p] = max(segub[p], lb);
}
void pushSeg(int p) {
applyRegion(p*2,seglb[p],segub[p]);
applyRegion(p*2+1,seglb[p],segub[p]);
seglb[p] = 0;
segub[p] = 1e9;
}
void addSeg(int i, int j, int lb, int ub, int p=1, int l=0, int r=N-1) {
if(j < l || i > r) return;
if(i <= l && j >= r) {
applyRegion(p,lb,ub);
return;
}
pushSeg(p);
int m=(l+r)/2;
addSeg(i,j,lb,ub,p*2,l,m);
addSeg(i,j,lb,ub,p*2+1,m+1,r);
}
int getSeg(int i, int p=1, int l=0, int r=N-1) {
if(i < l || i > r) return 0;
if(l == r) return seglb[p];
pushSeg(p);
int m=(l+r)/2;
int a=getSeg(i,p*2,l,m);
int b=getSeg(i,p*2+1,m+1,r);
return a+b;
}
void buildWall(int n, int k, int op[], int left[], int right[], int height[], int finalHeight[]){
buildSeg();
RE(i,k) {
if(op[i] == 1) {
addSeg(left[i], right[i], height[i], 1e9);
} else {
addSeg(left[i], right[i], 0, height[i]);
}
}
RE(i,n) finalHeight[i] = getSeg(i);
}
# | 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... |