Cod sursa(job #253294)

Utilizator taloibogdanTaloi Bogdan Cristian taloibogdan Data 5 februarie 2009 17:13:25
Problema Deque Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.42 kb
#include<stdio.h>
long n,k,i,a[5000005],p[5000005],st,dr;
long long s;
int main()
{
 freopen("deque.in","r",stdin);
 freopen("deque.out","w",stdout);
 scanf("%ld%ld",&n,&k);
 for(i=1;i<=n;++i)
    scanf("%ld",&a[i]);
 st=1;
 dr=0;
 s=0;
 for(i=1;i<=n;++i)
    {while(a[p[dr]]>=a[i]&&dr>=st)--dr;
     p[++dr]=i;
     if(p[st]<=i-k)++st;
     if(i>=k)
      s+=a[p[st]];}
 printf("%lld\n",s);
 return 0;
}