Cod sursa(job #386190)

Utilizator hasegandaniHasegan Daniel hasegandani Data 24 ianuarie 2010 11:57:33
Problema Deque Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.62 kb
#include<stdio.h>

#define Nmax 5000010

int n,k;
int A[Nmax],deq[Nmax];
int in,sf;
long long S;

int main()
{
    freopen("deque.in","r",stdin);
    freopen("deque.out","w",stdout);
    scanf("%d%d",&n,&k);
    
    for(int i=1;i<=n;++i)
        scanf("%d",&A[i]);
        
    in=1; sf=0;
    for(int i=1;i<=n;++i)
        {
        while (in<=sf && A[i] <= A[deq[sf]]) 
            --sf;
        
        deq[++sf]=i;
        
        if (deq[in] == i-k)
            in++;
            
        if (i>=k)
            S+=A[deq[in]];
        }
        
    printf("%lld\n",S);
    
    return 0;
}