Submission #1280515

#TimeUsernameProblemLanguageResultExecution timeMemory
1280515nicolo_010Radio Towers (IOI22_towers)C++20
11 / 100
4064 ms2988 KiB
#include <bits/stdc++.h>
#include "towers.h"
using namespace std;
using ll = long long;
using pii = pair<int, int>;

vector<int> h;

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

bool cmp(int a, int b) {
	return h[a] < h[b];
}

int max_towers(int l, int r, int d) {
	int n = h.size();
	vector<int> L(n, 0), R(n, n-1);
	for (int i=0; i<n; i++) {
		for (int j=i-1; j>=0; j--) {
			if (h[j] >= h[i]+d) {
				L[i] = j;
				break;
			}
		}
		for (int j=i+1; j<n; j++) {
			if (h[j] >= h[i]+d) {
				R[i] = j;
				break;
			}
		}
	}
	vector<int> towers;
	for (int i=l; i <= r; i++) {
		towers.push_back(i);
	}
	sort(towers.begin(), towers.end(), cmp);
	int m = towers.size();
	vector<bool> leased(n, 0);
	int cnt=0;
	for (int k=0; k<m; k++) {
		bool can = true;
		int i = towers[k];
		for (int j=L[i]; j<i; j++) {
			if (leased[j]) can = false;
		}
		for (int j = R[i]; j>i; j--) {
			if (leased[j]) can= false;
		}
		if (can) {
			leased[i] = true;
			cnt++;
		}
	}
	return cnt;
}
#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...