제출 #585672

#제출 시각아이디문제언어결과실행 시간메모리
585672LastRonin벽 (IOI14_wall)C++14
0 / 100
36 ms70748 KiB
#include "wall.h"  
#include <bits/stdc++.h>
using namespace std;
#define pb push_back

const int N = 3e6;

vector<int> g[N];


void buildWall(int n, int k, int op[], int left[], int right[], int height[], int finalHeight[]){
	for(int i = 0; i < n; i++)
		finalHeight[i] = 0;
	int per = 0;
	for(int i = 0; i < k; i++) {
		if(op[i] == 2)break;
		per = i;
	}
	for(int i = 0; i <= per; i++) {
		g[left[i]].pb(height[i]);
		g[right[i] + 1].pb(-height[i]);						
	}
	multiset<int> q;
	for(int j = 0; j < n; j++) {
		for(auto u : g[j]) {
			if(u < 0)
				q.erase(q.find(-u));
			else
				q.insert(u);	
		}
		finalHeight[j] = *q.rbegin(); 
		g[j].clear();
	}
	for(int i = per + 1; i < k; i++) {
		g[left[i]].pb(height[i]);
		g[right[i] + 1].pb(-height[i]);						
	}
	q.clear();
	for(int j = 0; j < n; j++) {
		for(auto u : g[j]) {
			if(u < 0)
				q.erase(q.find(-u));
			else
				q.insert(u);
		}
		finalHeight[j] = min(finalHeight[j], *q.begin());
		g[j].clear();
	}
	return;
}

#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...