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