Cod sursa(job #518168)

Utilizator Adrian1997Radulescu Adrian Adrian1997 Data 30 decembrie 2010 17:40:39
Problema Deque Scor 60
Compilator cpp Status done
Runda Arhiva educationala Marime 0.47 kb
#include <stdio.h>
int n,k,a[500002],dq[500002];
long long sum;

int main(void)
{int i,j,p,u;
 freopen("deque.in","r",stdin);
 freopen("deque.out","w",stdout);
 
 scanf("%d %d",&n,&k);
 for(i=1;i<=n;i++)
  scanf("%d",&a[i]);
 p=1;
 u=1;
 
 dq[1]=1;
 sum=0;
 for(i=2;i<=n;i++)
 { while(p<=u && a[i]<=a[dq[u]])
    u--;
   u++;
   dq[u]=i;   
   while(p<=u && i-dq[p]+1>k)
   {p++;
   }
   if(i>=k)
	   sum+=a[dq[p]];
 }
 printf("%lld",sum);
return 0;
}