이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include <iostream>
#include <vector>
#include <string>
#include <fstream>
#include <algorithm>
#include <climits>
#include <cstdlib>
#include <cstdio>
#include <set>
#include <unordered_set>
#include <map>
#include <unordered_map>
#include <bitset>
#include <deque>
#include <queue>
#include <tuple>
#include <cmath>
#include <cctype>
#include <stack>
#include <cassert>
using namespace std;
using ll = long long;
int ns;
int lzMin[8000001], lzMax[8000001];
int ans[2000000];
void pushdown(int k, int l, int r) {
if (l == r) return;
if (lzMin[k] == -1 && lzMax[k] == 1e6) return;
for (int j = 2*k; j <= 2*k+1; j++) {
lzMin[j] = max(lzMin[j], lzMin[k]); lzMax[j] = max(lzMax[j], lzMin[k]);
lzMax[j] = min(lzMax[j], lzMax[k]); lzMin[j] = min(lzMin[j], lzMax[k]);
}
lzMin[k] = -1; lzMax[k] = 1e6;
}
void minr(int a, int b, int v, int k = 1, int l = 0, int r = ns-1) {
if (r < a || b < l) return;
if (a <= l && r <= b) {
lzMin[k] = max(lzMin[k], v);
lzMax[k] = max(lzMax[k], v);
} else {
int mid = (l+r)/2;
pushdown(k, l, r);
minr(a, b, v, 2*k, l, mid);
minr(a, b, v, 2*k+1, mid+1, r);
}
}
void maxr(int a, int b, int v, int k = 1, int l = 0, int r = ns-1) {
if (r < a || b < l) return;
if (a <= l && r <= b) {
lzMax[k] = min(lzMax[k], v);
lzMin[k] = min(lzMin[k], v);
} else {
int mid = (l+r)/2;
pushdown(k, l, r);
maxr(a, b, v, 2*k, l, mid);
maxr(a, b, v, 2*k+1, mid+1, r);
}
}
void walk(int k = 1, int l = 0, int r = ns-1) {
if (l == r) ans[l] = lzMin[k];
else {
int mid = (l+r)/2;
pushdown(k, l, r);
walk(2*k, l, mid);
walk(2*k+1, mid+1, r);
}
}
void buildWall(int n, int k, int op[], int left[], int right[], int height[], int finalHeight[]) {
ns = n;
minr(0, n-1, 0); maxr(0, n-1, 0);
for (int i = 0; i < k; i++) {
if (op[i] == 1) {
minr(left[i], right[i], height[i]);
} else {
maxr(left[i], right[i], height[i]);
}
}
walk();
for (int i = 0; i < n; i++) finalHeight[i] = ans[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... |