Cod sursa(job #2668399)

Utilizator H7GhosTsdfgsd asdf H7GhosT Data 4 noiembrie 2020 21:01:20
Problema Secventa Scor 70
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.81 kb
#include <bits/stdc++.h>
using namespace std;

int main() {
    freopen("secventa.in", "r", stdin);
    freopen("secventa.out", "w", stdout);

    int n, k;
    scanf("%d%d", &n, &k);

    int v[int(5e5 + 10)];
    deque<int> q;
    for (int i = 0; i < n; i++) {
        scanf("%d", v + i);
    }
    auto push = [&] (int i) {
        while (!q.empty() && v[q.back()] >= v[i]) {
            q.pop_back();
        }
        q.push_back(i);
    };

    for (int i = 0; i < k; i++) {
        push(i);
    }

    int mx = v[q.front()];
    int st = 0;

    for (int i = k; i < n; i++) {
        if (v[i-k] == v[q.front()] && q.front() <= i - k) q.pop_front();
        push(i);
        if (v[q.front()] > mx) {
            mx = v[q.front()];
            st = i - k + 1;
        }
    }
    printf("%d %d %d", st + 1, st + k, mx);
}