답안 #113247

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
113247 2019-05-24T12:05:24 Z njchung99 벽 (IOI14_wall) C++14
0 / 100
163 ms 8248 KB
#include "wall.h"
#include<cstdio>
#include<algorithm>
using namespace std;
int mi[8000000], ma[8000000];
int *dap;
void update(int lo, int hi,int val,int node, int x, int y,int p) {
	if (hi < x || y < lo)return;
	if (lo <= x && y <= hi) {
		if (p == 1) {
			mi[node] = max(mi[node], val);
			ma[node] = max(ma[node], val);
		}
		else if(p==2)
		{	
			mi[node] = min(mi[node], val);
			ma[node] = min(ma[node], val);
		}
		if (x == y)
			dap[x] = ma[node];
		return;
	}
	int ll = node * 2;
	int rr = node * 2 + 1;
	int mid = (x + y) / 2;
	mi[ll] = min(mi[ll], mi[node]); mi[rr] = min(mi[ll], mi[node]);
	ma[ll] = min(ma[ll], mi[node]); ma[rr] = min(ma[rr], mi[node]);
	mi[ll] = max(mi[ll], ma[node]); mi[rr] = max(mi[rr], ma[node]);
	ma[ll] = max(ma[ll], ma[node]); ma[rr] = max(ma[rr], ma[node]);
	ma[node] = 0; mi[node] = 1234567890;
	update(lo, hi, val, node*2, x, mid, p);
	update(lo, hi, val, node * 2 + 1, mid + 1, y, p);
}
void buildWall(int n, int k, int op[], int left[], int right[], int height[], int finalHeight[]) {
	dap = finalHeight;
	for (int i = 0; i < k; ++i) {
		update(left[i], right[i], height[i], 1, 0, n-1, op[i]);
	}
	for (int i = 0; i < n; ++i)
		update(i,i,0,1,0,n-1,0);
	return;
}
# 결과 실행 시간 메모리 Grader output
1 Correct 2 ms 384 KB Output is correct
2 Correct 3 ms 384 KB Output is correct
3 Incorrect 3 ms 384 KB Output isn't correct
4 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 2 ms 384 KB Output is correct
2 Correct 143 ms 8248 KB Output is correct
3 Incorrect 163 ms 4216 KB Output isn't correct
4 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 2 ms 384 KB Output is correct
2 Correct 4 ms 384 KB Output is correct
3 Incorrect 3 ms 372 KB Output isn't correct
4 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 320 KB Output is correct
2 Correct 3 ms 384 KB Output is correct
3 Incorrect 3 ms 384 KB Output isn't correct
4 Halted 0 ms 0 KB -