Cod sursa(job #2217698)

Utilizator VladTiberiuMihailescu Vlad Tiberiu VladTiberiu Data 1 iulie 2018 15:59:52
Problema Deque Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.73 kb
#include <bits/stdc++.h>

using namespace std;

const int NMax = 5000003;

deque<pair<int,int> > deq;
int n,k;

int main(){
    freopen("deque.in","r",stdin);
    freopen("deque.out","w",stdout);
    scanf("%d%d",&n,&k);
    long long ans = 0;
    for(int i = 1; i <= n; ++i){
        int x;
        scanf("%d",&x);
        if(deq.empty()){
            deq.push_back(make_pair(x,i));
            continue;
        }
        if(i - k + 1 > deq.front().second)
            deq.pop_front();
        while(!deq.empty() && x <= deq.back().first)
            deq.pop_back();
        deq.push_back(make_pair(x,i));
        if(i >= k)
            ans += 1LL*deq.front().first;
    }
    printf("%lld\n",ans);
    return 0;
}