이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include "wall.h"
#include <bits/stdc++.h>
#define x first
#define y second
using namespace std;
typedef long long ll;
typedef pair<ll, ll> p; //lower bound, upper bound
int *ans;
p tree[1 << 22];
void push(int node, int op, ll v){
if(op == 1){
tree[node].x = max(tree[node].x, v);
tree[node].y = max(tree[node].y, v);
}else{
tree[node].x = min(tree[node].x, v);
tree[node].y = min(tree[node].y, v);
}
}
void update(int node, int s, int e, int l, int r, int op, ll v){
if(r < s || e < l) return;
if(l <= s && e <= r){
push(node, op, v);
ans[l] = tree[node].x;
return;
}
int m = s + e >> 1;
push(node*2, 1, tree[node].x);
push(node*2, 2, tree[node].y);
push(node*2+1, 1, tree[node].x);
push(node*2+1, 2, tree[node].y);
tree[node].x = 0, tree[node].y = 1e9;
update(node*2, s, m, l, r, op, v);
update(node*2+1, m+1, e, l, r, op, v);
}
void buildWall(int n, int k, int op[], int lf[], int rf[], int h[], int res[]){
ans = res;
for(int i=0; i<k; i++){
update(1, 0, n-1, lf[i], rf[i], op[i], h[i]);
}
for(int i=0; i<n; i++){
update(1, 0, n-1, i, i, 1, 0);
}
}
컴파일 시 표준 에러 (stderr) 메시지
wall.cpp: In function 'void update(int, int, int, int, int, int, ll)':
wall.cpp:30:12: warning: suggest parentheses around '+' inside '>>' [-Wparentheses]
int m = s + e >> 1;
~~^~~
# | 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... |