Submission #1056706

#TimeUsernameProblemLanguageResultExecution timeMemory
1056706DorostWefRadio Towers (IOI22_towers)C++17
23 / 100
4093 ms5928 KiB
#include "towers.h"

#include <bits/stdc++.h>

#pragma GCC optimize("O3,unroll-loops")
#pragma GCC target("avx2")

using namespace std;

const int N = 100002;
int h[N];
bool f[N];
int n;

void init(int N, std::vector<int> H) {
	n = N;
	for (int i = 0; i < n; i++)
		h[i] = H[i];
}

int solve (int l, int r, int d) {
	if (l > r)
		return 0;
	if (l == r)
		return f[l];
	int mx = -1, in = -1;
	int fin = 0;
	for (int i = l; i <= r; i++) {
		if (h[i] > mx) {
			mx = h[i];
			in = i;
		}
		fin |= f[i];
	}
	//if (f[in]) {
		for (int i = l; i <= r; i++) {
			if (h[i] > mx - d)
				f[i] = false;
		}
	//}
	return max (fin, solve (l, in - 1, d) + solve(in + 1, r, d));
}

int max_towers(int L, int R, int D) {
	for (int i = 0; i < N; i++)
		f[i] = true;
	return max (1, solve (L, R, D));
}
#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...