제출 #425303

#제출 시각아이디문제언어결과실행 시간메모리
425303MarcoMeijerWall (IOI14_wall)C++14
100 / 100
1495 ms69604 KiB
#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 timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...