Cod sursa(job #258237)

Utilizator RobybrasovRobert Hangu Robybrasov Data 14 februarie 2009 21:35:48
Problema Deque Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 0.63 kb
#include <cstdio>
#define N 5000001

int DQ[N],A[N],n,i,k,li,ls;
long long sum;

int main()
{
	freopen("deque.in","r",stdin);
	freopen("deque.out","w",stdout);
    scanf("%d%d\n",&n,&k);
	for (i=1; i<=n; i++) scanf("%d",&A[i]);
    li=0; ls=1; sum=0;
    for (i=1; i<=k; i++)
    {
        while (li<ls && A[DQ[ls]]>=A[i])
            ls--;
        DQ[++ls]=i;
    }
    li=1;
    for (i=k+1; i<=n; i++)
    {
        sum+=A[DQ[li]];
        if (DQ[li]<=i-k)
            li++;
        while (li<=ls && A[DQ[ls]]>=A[i])
            ls--;
        DQ[++ls]=i;
    }

    printf("%lld",sum+A[DQ[li]]);

    return 0;
}