164872025-05-03 01:06:18algoproFasor (40)cpp17Elfogadva 40/4083ms2740 KiB
// UUID: 11a59961-5e5d-40f6-8c54-18bad4d8eb4e
#include <bits/stdc++.h>
using namespace std;

#include <iostream>
#include <vector>
#include <deque>
using namespace std;

int main() {
    int N, K;
    cin >> N >> K;

    vector<int> H(N);
    for (int i = 0; i < N; ++i) {
        cin >> H[i];
    }

    vector<int> maxLeft(N, 0), maxRight(N, 0);

    deque<int> dq;
    for (int i = N - 1; i >= 0; --i) {
        while (!dq.empty() && dq.front() > i + K) dq.pop_front();
        while (!dq.empty() && H[dq.back()] <= H[i]) dq.pop_back();
        dq.push_back(i);
        if (i + 1 <= N - 1) maxRight[i] = H[dq.front()];
    }
    
    dq.clear();
    for (int i = 0; i < N; ++i) {
        while (!dq.empty() && dq.front() < i - K) dq.pop_front();
        while (!dq.empty() && H[dq.back()] <= H[i]) dq.pop_back();
        dq.push_back(i);
        if (i - 1 >= 0) maxLeft[i] = H[dq.front()];
    }

    for (int i = 0; i < N; ++i) {
        bool ok = true;
        if (i - 1 >= 0 && maxLeft[i] > H[i]) ok = false;
        if (i + 1 <= N - 1 && maxRight[i] > H[i]) ok = false;
        if (ok) {
            cout << (i + 1) << endl;  
            return 0;
        }
    }

    cout << -1 << endl;
    return 0;
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
base40/40
1Elfogadva0/01ms316 KiB
2Elfogadva0/04ms316 KiB
3Elfogadva2/21ms316 KiB
4Elfogadva2/21ms320 KiB
5Elfogadva2/21ms316 KiB
6Elfogadva2/21ms508 KiB
7Elfogadva2/21ms316 KiB
8Elfogadva2/22ms500 KiB
9Elfogadva2/24ms316 KiB
10Elfogadva2/24ms316 KiB
11Elfogadva2/24ms432 KiB
12Elfogadva2/23ms580 KiB
13Elfogadva2/239ms1564 KiB
14Elfogadva2/235ms1568 KiB
15Elfogadva2/265ms2740 KiB
16Elfogadva2/271ms2728 KiB
17Elfogadva2/278ms2612 KiB
18Elfogadva2/278ms2612 KiB
19Elfogadva2/276ms2732 KiB
20Elfogadva2/224ms1572 KiB
21Elfogadva2/263ms2612 KiB
22Elfogadva2/283ms2612 KiB