234872026-01-23 18:39:17matemakaiFasor (40)cpp17Elfogadva 40/4090ms3272 KiB
#include <bits/stdc++.h>
using namespace std;

int tree_size = 1;
vector<int> tree;

void update(int k, int x) {
	k += tree_size;
	tree[k] = x;
	for (k /= 2; k >= 1; k /= 2) {	
		tree[k] = max(tree[2 * k], tree[2 * k + 1]);
	}
}

int get_max(int a, int b) {
	a += tree_size;
	b += tree_size;
	int ans = -1;
	while (a <= b) {
		if (a % 2 == 1) {
			ans = max(ans, tree[a++]);
		}
		if (b % 2 == 0) {
			ans = max(ans, tree[b--]);
		}
		a /= 2;
		b /= 2;
	}

	return ans;
}

int main() {
	int n, k;
	cin >> n >> k;
	while (tree_size < n) {
		tree_size *= 2;
	}
	tree_size;
	tree.resize(tree_size * 2, -1);
	vector<int> v(n);
	for (int i = 0; i < n; ++i) {
		cin >> v[i];
		update(i, v[i]);
	}

	int ans = -1;

	for (int i = 0; i < n; ++i) {
		//if (get_max(max(0, i - k), min(n - 1, i + k)) <= v[i]) {
		if (get_max(i, min(n - 1, i + k)) <= v[i]) {
			ans = i + 1;
			break;
		}
	}

	cout << ans << endl;
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
base40/40
1Elfogadva0/01ms316 KiB
2Elfogadva0/04ms748 KiB
3Elfogadva2/21ms316 KiB
4Elfogadva2/21ms316 KiB
5Elfogadva2/21ms316 KiB
6Elfogadva2/21ms316 KiB
7Elfogadva2/21ms316 KiB
8Elfogadva2/22ms316 KiB
9Elfogadva2/24ms564 KiB
10Elfogadva2/24ms576 KiB
11Elfogadva2/24ms564 KiB
12Elfogadva2/23ms368 KiB
13Elfogadva2/248ms1588 KiB
14Elfogadva2/248ms1832 KiB
15Elfogadva2/272ms3248 KiB
16Elfogadva2/279ms3248 KiB
17Elfogadva2/286ms3256 KiB
18Elfogadva2/289ms3256 KiB
19Elfogadva2/290ms3124 KiB
20Elfogadva2/230ms1832 KiB
21Elfogadva2/275ms3272 KiB
22Elfogadva2/287ms3248 KiB