Cod sursa(job #1902919)

Utilizator 1475369147896537415369Andrei Udriste 1475369147896537415369 Data 4 martie 2017 20:54:31
Problema Deque Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.56 kb
#include <cstdio>
#include <deque>
using namespace std;

int N, K, A[5000001], i;
long long Sum;
deque<int> D;

int main(){

    freopen("deque.in", "r", stdin);
    freopen("deque.out", "w", stdout);

    scanf("%d %d", &N, &K);

    for(i = 1; i <= N; i++){
        scanf("%d", &A[i]);
    }
    for(i = 1; i <= N; i++){
        while (!D.empty() && A[i] <= A[D.back()]) D.pop_back();
        D.push_back(i);
        if (D.front() == i-K) D.pop_front();
        if (i >= K) Sum += A[D.front()];
    }
    printf("%lld", Sum);
    return 0;
}