Cod sursa(job #1835387)

Utilizator mdiannnaMarusic Diana mdiannna Data 26 decembrie 2016 19:39:46
Problema Deque Scor 60
Compilator cpp Status done
Runda Arhiva educationala Marime 0.59 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);

    cin >> n >> k;

    for(int i=0; i<n; i++)
        cin >> 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();
    }

    cout << suma;
    return 0;
}