206262026-01-08 09:30:36DhaneHaneFasor (40)cpp17Accepted 40/4079ms2732 KiB
#include <iostream>
#include <vector>
#include <cmath>
#include <deque>
using namespace std;

int main() {
    int N, K;
    cin >> N >> K;
    vector<int> H(N+1);
    for(int i=1; i<=N; i++) cin >> H[i];
    
    vector<int> max_l(N+1, 0);
    deque<int> dq;
    for(int i=1; i<=N; i++) {
        while(!dq.empty() && dq.front() < i - K) dq.pop_front();
        if(!dq.empty()) max_l[i] = H[dq.front()];
        while(!dq.empty() && H[dq.back()] <= H[i]) dq.pop_back();
        dq.push_back(i);
    }
    
    vector<int> max_r(N+1, 0);
    dq.clear();
    for(int i=N; i>=1; i--) {
        while(!dq.empty() && dq.front() > i + K) dq.pop_front();
        if(!dq.empty()) max_r[i] = H[dq.front()];
        while(!dq.empty() && H[dq.back()] <= H[i]) dq.pop_back();
        dq.push_back(i);
    }
    
    for(int i=1; i<=N; i++) {
        if(max(max_l[i], max_r[i]) <= H[i]) {
            cout << i << endl;
            return 0;
        }
    }
    cout << -1 << endl;
    return 0;
}
SubtaskSumTestVerdictTimeMemory
base40/40
1Accepted0/01ms316 KiB
2Accepted0/04ms316 KiB
3Accepted2/21ms316 KiB
4Accepted2/21ms500 KiB
5Accepted2/21ms316 KiB
6Accepted2/21ms316 KiB
7Accepted2/21ms512 KiB
8Accepted2/22ms508 KiB
9Accepted2/24ms440 KiB
10Accepted2/24ms316 KiB
11Accepted2/24ms440 KiB
12Accepted2/23ms316 KiB
13Accepted2/237ms1592 KiB
14Accepted2/235ms1332 KiB
15Accepted2/264ms2728 KiB
16Accepted2/268ms2724 KiB
17Accepted2/274ms2612 KiB
18Accepted2/275ms2604 KiB
19Accepted2/272ms2732 KiB
20Accepted2/221ms1568 KiB
21Accepted2/257ms2620 KiB
22Accepted2/279ms2612 KiB