Cod sursa(job #765442)

Utilizator BlaugranasEnal Gemaledin Blaugranas Data 7 iulie 2012 18:06:54
Problema Deque Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.56 kb
#include<cstdio>
int a,n,k,i,b[5000001],q[5000001],p,u;
long long s;
int main()
{freopen("deque.in","r",stdin);
freopen("deque.out","w",stdout);
scanf("%d%d",&n,&k);
for(i=1;i<=n;i++)
      {scanf("%d",&a);
      while(u>p&&a<q[u-1])
             u--;
      q[u++]=a,b[p]++;
      if(u-p>1)
             b[p+1]++;
      b[u-1]=1;
      if(((u-p==1&&p==i-k)||(p<i-k&&u-p<k)||(i==k&&b[p]>1))&&b[p]<k)
             s+=q[p];
      else
             if(u-p==k||b[p]==k||p==i-k||(i==k&&b[p]==1))
                     s+=q[p++];}
printf("%lld",s);
return 0;}