답안 #83419

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
83419 2018-11-07T13:48:58 Z Tusk 벽 (IOI14_wall) C++14
100 / 100
876 ms 160648 KB
#include "wall.h"
#include <bits/stdc++.h>
 
using namespace std;
 
const int N = 1 << 21;
 
int lo[N << 1], hi[N << 1];
int *ret, S;
 
void puttag(int p, int low, int high) {
	lo[p] = min(high, max(low, lo[p]));
	hi[p] = max(low, min(high, hi[p]));
}
 
void pushlz(int p, int l, int r) {
	if(l == r) ret[l] = min(hi[p], max(lo[p], ret[l]));
	else {
		puttag(p << 1, lo[p], hi[p]);
		puttag(p << 1 | 1, lo[p], hi[p]);
	}
	lo[p] = 0;
	hi[p] = INT_MAX;
}
 
void build(int p = 1, int l = 0, int r = S - 1) {
	hi[p] = INT_MAX;
	if(l == r) return;
	int mid = (l + r) >> 1;
	build(p << 1, l, mid);
	build(p << 1 | 1, mid + 1, r);
}
 
void update(int x, int y, int low, int high, int p = 1, int l = 0, int r = S - 1) {
	if(x > r || l > y) return;
	if(x <= l && r <= y) return puttag(p, low, high);
	pushlz(p, l, r);
	int mid = (l + r) >> 1;
	update(x, y, low, high, p << 1, l, mid);
	update(x, y, low, high, p << 1 | 1, mid + 1, r);
}
 
void proc(int p = 1, int l = 0, int r = S - 1) {
	pushlz(p, l, r);
	if(l == r) return;
	int mid = (l + r) >> 1;
	proc(p << 1, l, mid);
	proc(p << 1 | 1, mid + 1, r);
}
 
void buildWall(int n, int k, int op[], int left[], int right[], int height[], int finalHeight[]){
	ret = finalHeight;
	S = n;
	build();
	for(int i = 0; i < k; i++) {
		if(op[i] == 1) update(left[i], right[i], height[i], INT_MAX);
		else if(op[i] == 2) update(left[i], right[i], 0, height[i]);
	}
	proc();
}
# 결과 실행 시간 메모리 Grader output
1 Correct 2 ms 376 KB Output is correct
2 Correct 4 ms 660 KB Output is correct
3 Correct 3 ms 660 KB Output is correct
4 Correct 8 ms 1096 KB Output is correct
5 Correct 8 ms 1232 KB Output is correct
6 Correct 8 ms 1336 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 2 ms 1336 KB Output is correct
2 Correct 233 ms 14512 KB Output is correct
3 Correct 216 ms 14512 KB Output is correct
4 Correct 563 ms 22060 KB Output is correct
5 Correct 368 ms 22748 KB Output is correct
6 Correct 345 ms 22748 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 2 ms 22748 KB Output is correct
2 Correct 4 ms 22748 KB Output is correct
3 Correct 3 ms 22748 KB Output is correct
4 Correct 8 ms 22748 KB Output is correct
5 Correct 10 ms 22748 KB Output is correct
6 Correct 7 ms 22748 KB Output is correct
7 Correct 2 ms 22748 KB Output is correct
8 Correct 189 ms 22748 KB Output is correct
9 Correct 206 ms 22748 KB Output is correct
10 Correct 573 ms 22748 KB Output is correct
11 Correct 354 ms 22748 KB Output is correct
12 Correct 400 ms 22788 KB Output is correct
13 Correct 2 ms 22788 KB Output is correct
14 Correct 182 ms 22788 KB Output is correct
15 Correct 62 ms 22788 KB Output is correct
16 Correct 606 ms 22788 KB Output is correct
17 Correct 343 ms 22788 KB Output is correct
18 Correct 352 ms 22788 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 2 ms 22788 KB Output is correct
2 Correct 4 ms 22788 KB Output is correct
3 Correct 3 ms 22788 KB Output is correct
4 Correct 8 ms 22788 KB Output is correct
5 Correct 9 ms 22788 KB Output is correct
6 Correct 7 ms 22788 KB Output is correct
7 Correct 2 ms 22788 KB Output is correct
8 Correct 174 ms 22788 KB Output is correct
9 Correct 224 ms 22788 KB Output is correct
10 Correct 574 ms 22788 KB Output is correct
11 Correct 357 ms 22848 KB Output is correct
12 Correct 347 ms 22848 KB Output is correct
13 Correct 2 ms 22848 KB Output is correct
14 Correct 183 ms 22848 KB Output is correct
15 Correct 57 ms 22848 KB Output is correct
16 Correct 593 ms 22848 KB Output is correct
17 Correct 401 ms 22848 KB Output is correct
18 Correct 371 ms 22848 KB Output is correct
19 Correct 876 ms 70196 KB Output is correct
20 Correct 803 ms 70196 KB Output is correct
21 Correct 858 ms 70356 KB Output is correct
22 Correct 829 ms 78420 KB Output is correct
23 Correct 799 ms 88768 KB Output is correct
24 Correct 861 ms 99332 KB Output is correct
25 Correct 838 ms 109776 KB Output is correct
26 Correct 826 ms 122564 KB Output is correct
27 Correct 810 ms 133212 KB Output is correct
28 Correct 842 ms 141056 KB Output is correct
29 Correct 818 ms 150856 KB Output is correct
30 Correct 809 ms 160648 KB Output is correct