Cod sursa(job #288998)
#include<stdio.h>
long int sum,n,k,v[5000001],capat=1,coada,p,deque[5000001][2];
void insert(int val,int poz)
{
while(capat<=coada && val<=deque[coada][0])coada--;
coada++; deque[coada][0]=val; deque[coada][1]=poz;
}
long int query()
{
while(capat<=coada && deque[capat][1]<p)capat++;
return deque[capat][0];
}
int main(void)
{
freopen("deque.in","r",stdin);
freopen("deque.out","w",stdout);
int i;
capat=1;
scanf("%ld %ld",&n,&k);
for(i=1; i<=n; i++)scanf("%ld\n",&v[i]);
for(i=1; i<k; i++)insert(v[i],i);
for(i=k,p=1; i<=n; i++,p++)
{insert(v[i],i);
sum+=query();
}
printf("%ld",sum);
return 0;
}