Cod sursa(job #2668369)

Utilizator H7GhosTsdfgsd asdf H7GhosT Data 4 noiembrie 2020 20:15:32
Problema Deque Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.75 kb
#include <bits/stdc++.h>
using namespace std;

int main() {
    freopen("deque.in", "r", stdin);
    freopen("deque.out", "w", stdout);
    
    int n, k;
    scanf("%d%d", &n, &k);

    vector<int> a(n);
    deque<pair<int,int>> q;

    for (int i = 0; i < n; i++) {
        scanf("%d", &a[i]);
    }

    auto push = [&] (int i) {
        while (!q.empty() && a[i] <= q.back().first) {
            q.pop_back();
        }
        q.push_back(make_pair(a[i], i));
    };

    for (int i = 0; i < k; i++) {
        push(i);
    }
    long long res = q.front().first;
    for (int i = k; i < n; i++) {
        if (q.front().first == a[i-k] && q.front().second <= i - k) q.pop_front();
        push(i);
        res += q.front().first;
    }
    printf("%lld", res);
}