Submission #1067270

#TimeUsernameProblemLanguageResultExecution timeMemory
1067270n1kRadio Towers (IOI22_towers)C++17
11 / 100
4100 ms8892 KiB
#include "towers.h"
#include <bits/stdc++.h>

using namespace std;

int n;
vector<int> h;

void init(int N, std::vector<int> H) {
	n = N;
	h = H;
}

int getmin(int l, int r){
	array<int, 2> mn={int(1e9) + 10, 0};
	for(int i=l; i<=r; i++) mn = min(mn, {h[i], i});
	return mn[0];
}

int find(int l, int r, int d, long long minh){
	if(l>r) return 0;
	array<int, 2> mx = {0};
	for(int i=l; i<=r; i++){
		mx = max(mx, {h[i], i});
	}

	int ret = max({
		int(mx[0]+d<=minh), 
		find(l, mx[1]-1, d, mx[0]) + find(mx[1] + 1, r, d, mx[0]),
		int(getmin(l, mx[1]-1)+d<=minh),
		int(getmin(mx[1]+1, r)+d<=minh)
	});
	return ret;
}

int max_towers(int L, int R, int D) {
	return find(L, R, D, 1e18);
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...