Cod sursa(job #1513505)

Utilizator andru47Stefanescu Andru andru47 Data 29 octombrie 2015 17:23:07
Problema Deque Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.55 kb
#include <bits/stdc++.h>
using namespace std;
const int NMAX=5000005;
long long n,k,a[NMAX];
deque <int> dq;
int main()
{
    freopen("deque.in","r",stdin);
    freopen("deque.out","w",stdout);
    scanf("%lld %lld\n",&n,&k);
    for (int i=1 ; i<=n ; ++i)
        scanf("%lld",&a[i]);
    long long s=0;
    for (int i=1 ; i<=n ; ++i)
    {
        while(!dq.empty()&&a[i]<a[dq.back()])dq.pop_back();
        dq.push_back(i);
        if (dq.front()==i-k)dq.pop_front();
        if (i>=k) s += 1LL*a[dq.front()];
    }
    printf ("%lld\n",s);
}