이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include "wall.h"
#include<bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef double ld;
typedef pair<ll,ll> pll;
typedef pair<int,int> pii;
typedef complex<double> point;
void debug_out(){cerr << endl;}
template<typename Head, typename... Tail>
void debug_out(Head H, Tail... T){
cerr << H << ' ';
debug_out(T...);
}
#define debug(...) cerr << "(" << #__VA_ARGS__ << "): ", debug_out(__VA_ARGS__)
#define F first
#define S second
#define all(x) x.begin(), x.end()
#define MP(x, y) make_pair(x, y)
const int maxn = 2e6 + 10;
const int inf = 1e9;
int n, k, ans[maxn];
pii seg[maxn << 2];
void shift(int v, int l, int r);
void change(int v, int l, int r, int ql, int qr, pii val){
if (qr <= l || r <= ql) return;
if (ql <= l && r <= qr){
if (val.F > seg[v].S) seg[v].S = val.F;
else if (val.S < seg[v].F) seg[v].F = val.S;
seg[v].F = max(seg[v].F, val.F);
seg[v].S = min(seg[v].S, val.S);
return;
}
shift(v, l, r);
int mid = (l + r) >> 1;
change(v << 1, l, mid, ql, qr, val);
change(v << 1 | 1, mid, r, ql, qr, val);
seg[v].F = min(seg[v << 1].F, seg[v << 1 | 1].F);
seg[v].S = max(seg[v << 1].S, seg[v << 1 | 1].S);
}
void solve(int v, int l, int r){
if (l + 1 == r){
ans[l] = seg[v].F;
return;
}
shift(v, l, r);
int mid = (l + r) >> 1;
solve(v << 1, l, mid);
solve(v << 1 | 1, mid, r);
}
void shift(int v, int l, int r){
int mid = (l + r) >> 1;
change(v << 1, l, mid, l, mid, seg[v]);
change(v << 1 | 1, mid, r, mid, r, seg[v]);
}
void buildWall(int n, int k, int op[], int left[], int right[], int height[], int finalHeight[]){
for (int i = 0; i < k; i++){
right[i]++;
if (op[i] == 1){
change(1, 0, n, left[i], right[i], MP(height[i], inf));
}
else{
change(1, 0, n, left[i], right[i], MP(-inf, height[i]));
}
}
solve(1, 0, n);
for (int i = 0; i < n; i++) finalHeight[i] = ans[i];
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... |