Cod sursa(job #2423604)

Utilizator AlexBolfaAlex Bolfa AlexBolfa Data 21 mai 2019 18:44:57
Problema Deque Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.7 kb
#include <bits/stdc++.h>
#define MAX 5000005
using namespace std;
ifstream fin("deque.in");
ofstream fout("deque.out");

int n,k,x,A[MAX];
long long ans;
deque<int> dQ;

int main(){
    int i;
    fin>>n>>k;
    for(i=0;i<n;++i)
        fin>>A[i];

    for(i=0;i<k;++i){
        while(!dQ.empty()&&dQ.back()>A[i])dQ.pop_back();
        dQ.push_back(A[i]);
    }

    ans+=dQ.front();
    for(i=k;i<n;++i){
        while(!dQ.empty()&&dQ.back()>A[i])
            dQ.pop_back();
        dQ.push_back(A[i]);

        //daca elementul a iesit din multime
        if(dQ.front()==A[i-k])
            dQ.pop_front();

        ans+=dQ.front();
    }
    fout<<ans<<'\n';
    return 0;
}