Cod sursa(job #1835393)

Utilizator mdiannnaMarusic Diana mdiannna Data 26 decembrie 2016 19:45:09
Problema Deque Scor 25
Compilator cpp Status done
Runda Arhiva educationala Marime 0.62 kb
#include <iostream>
#include <deque>

using namespace std;
int n, k;
deque<int> d;
int A[5000000];
int64_t suma = 0;

void adauga(int x){
    while(!d.empty() && d.back() > x)
        d.pop_back();
    d.push_back(x);
}

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

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

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

    for(int i=0; i<k-1; i++)
        adauga(A[i]);
    for(int i=k-1; i<n; i++){
        adauga(A[i]);
        if(d.front() == A[i-k])
            d.pop_front();
        suma += d.front();
    }

    printf("%ld", suma);
    return 0;
}