1850 | 2022. 12. 05 11:05:42 | kovacs.peter.18f | Fasor (40) | cpp11 | Elfogadva 40/40 | 30ms | 5116 KiB |
#include <iostream>
#include <vector>
#include <stack>
using namespace std;
int main() {
cin.sync_with_stdio(false);
cin.tie(nullptr);
int N, K;
cin >> N >> K;
vector<int> treeS(N);
vector<bool> goodS(N);
stack<pair<int, int>> higherS; // height, index
for (int i = 0; i < N; i++) {
cin >> treeS[i];
while (!higherS.empty() && higherS.top().first <= treeS[i]) {
higherS.pop();
}
goodS[i] = higherS.empty() || higherS.top().second + K < i;
higherS.push({ treeS[i], i });
}
while (!higherS.empty()) {
higherS.pop();
}
int answer = -2;
for (int i = N - 1; i >= 0; i--) {
while (!higherS.empty() && higherS.top().first <= treeS[i]) {
higherS.pop();
}
if (goodS[i] && (higherS.empty() || higherS.top().second - K > i)) {
answer = i;
}
higherS.push({ treeS[i], i });
}
cout << answer + 1 << '\n';
}
Részfeladat | Összpont | Teszt | Verdikt | Idő | Memória | ||
---|---|---|---|---|---|---|---|
base | 40/40 | ||||||
1 | Elfogadva | 0/0 | 3ms | 1700 KiB | |||
2 | Elfogadva | 0/0 | 3ms | 2036 KiB | |||
3 | Elfogadva | 2/2 | 2ms | 2184 KiB | |||
4 | Elfogadva | 2/2 | 2ms | 2144 KiB | |||
5 | Elfogadva | 2/2 | 2ms | 2272 KiB | |||
6 | Elfogadva | 2/2 | 2ms | 2480 KiB | |||
7 | Elfogadva | 2/2 | 2ms | 2836 KiB | |||
8 | Elfogadva | 2/2 | 3ms | 2948 KiB | |||
9 | Elfogadva | 2/2 | 3ms | 3244 KiB | |||
10 | Elfogadva | 2/2 | 4ms | 3124 KiB | |||
11 | Elfogadva | 2/2 | 3ms | 3120 KiB | |||
12 | Elfogadva | 2/2 | 3ms | 3180 KiB | |||
13 | Elfogadva | 2/2 | 14ms | 3768 KiB | |||
14 | Elfogadva | 2/2 | 14ms | 3764 KiB | |||
15 | Elfogadva | 2/2 | 24ms | 4484 KiB | |||
16 | Elfogadva | 2/2 | 26ms | 4816 KiB | |||
17 | Elfogadva | 2/2 | 28ms | 4880 KiB | |||
18 | Elfogadva | 2/2 | 27ms | 4944 KiB | |||
19 | Elfogadva | 2/2 | 27ms | 5116 KiB | |||
20 | Elfogadva | 2/2 | 12ms | 4296 KiB | |||
21 | Elfogadva | 2/2 | 25ms | 4940 KiB | |||
22 | Elfogadva | 2/2 | 30ms | 4944 KiB |