Cod sursa(job #2423598)

Utilizator AlexBolfaAlex Bolfa AlexBolfa Data 21 mai 2019 18:41:07
Problema Deque Scor 60
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");

long long n,k,ans,x,A[MAX];
deque<long long> 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;
}