답안 #73630

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
73630 2018-08-28T15:50:50 Z TuGSGeReL 벽 (IOI14_wall) C++14
0 / 100
318 ms 8292 KB
#include "wall.h"
#include<bits/stdc++.h>
#define ll long long
#define mp make_pair
#define pub push_back
#define pob pop_back
#define ss second
#define ff first
#define ext exit(0)
using namespace std;
int o,a[2000001],lax[4000001],lam[4000001],fin[2000001];
void init(int node, int l , int r){
	lam[node]=1e9;
	if(l==r){
		lam[node]=1e9;
		return;
	}
	int mid=(l+r)/2;
	init(node*2,l,mid);
	init(node*2+1,mid+1,r);
}
void mx(int node, int h){
	lax[node]=max(lax[node],h);
	lam[node]=max(lam[node],lax[node]);
}
void mn(int node, int h){
	lam[node]=min(lam[node],h);
	lax[node]=min(lax[node],lam[node]);
}
void push(int node){
	mx(node*2,lax[node]);
	mx(node*2+1,lax[node]);
	mn(node*2,lam[node]);
	mn(node*2+1,lam[node]);
	lax[node]=0;
	lam[node]=1e9;
}
void query(int node,int l , int r, int L , int R, int h, int o){
	if(l>R || r< L) return;
	if(l>=L && r<=R) {
		if(o==1)mx(node,h);
		else mn(node,h);
		return ;
	}
	push(node);
	int mid=(l+r)/2;
	query(node*2,l,mid,L,R,h,o);
	query(node*2+1,mid+1,r,L,R,h,o);
}
void f(int node, int l , int r){
	if(l==r){
		fin[l]=lax[node];
		return ;
	}
	int mid=(l+r)/2;
	f(node*2,l,mid);
	f(node*2+1,mid+1,r);
}
void buildWall(int n, int k, int op[], int left[], int right[], int height[], int finalHeight[]){
	init(1,1,n);
	for(int i=0;i<k;i++){
		query(1,0,n-1,left[i],right[i],height[i],op[i]);
	}
	f(1,0,n-1);
	for(int i=0;i<n;i++) finalHeight[i]=fin[i];
	return;
}
# 결과 실행 시간 메모리 Grader output
1 Correct 4 ms 248 KB Output is correct
2 Correct 7 ms 612 KB Output is correct
3 Incorrect 6 ms 612 KB Output isn't correct
4 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 2 ms 612 KB Output is correct
2 Correct 318 ms 8292 KB Output is correct
3 Incorrect 273 ms 8292 KB Output isn't correct
4 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 3 ms 8292 KB Output is correct
2 Correct 8 ms 8292 KB Output is correct
3 Incorrect 5 ms 8292 KB Output isn't correct
4 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 3 ms 8292 KB Output is correct
2 Correct 7 ms 8292 KB Output is correct
3 Incorrect 4 ms 8292 KB Output isn't correct
4 Halted 0 ms 0 KB -