Cod sursa(job #1316025)

Utilizator obidanDan Ganea obidan Data 13 ianuarie 2015 14:22:30
Problema Deque Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.56 kb
#include <cstdio>
using namespace std;

const int NMax = 5000002;
int v[NMax],deq[NMax],n;
int first,last;
long long s = 0;

int main()
{
    freopen("deque.in","r",stdin);
    freopen("deque.out","w",stdout);

    int i,k;
    scanf("%d %d",&n,&k);
    for(i=1;i<=n;i++)
    {
        scanf("%d",&v[i]);
    }

    first = 1; last = 0;
    for(i=1;i<=n;i++)
    {

       while((first <= last) && (v[i] <= v[deq[last]])) --last;
       deq[++last]=i;
       if(deq[first]== i - k) first++;
        if(i>=k)
            s=s+v[deq[first]];

    }
    printf("%lld",s);


}