Cod sursa(job #791696)
#include<iostream>
#include<cstdio>
#define max 5000010
using namespace std;
int main(){
FILE *f=fopen("deque.in","r");
FILE *g=fopen("deque.out","w");
long n,k,x,y,front,back;
long deque[max],vect[max];
long long s=0;
fscanf(f,"%ld",&n);
fscanf(f,"%ld",&k);
front=1;
back=0;
for(long i=1;i<=n;i++){
fscanf(f,"%d",&x);
vect[i]=x;
while(front<=back && deque[back]>x)
back--;
deque[++back]=x;
if(i>k && deque[front]==vect[i-k])
front++;
if(i>=k)
s+=deque[front];
}
fprintf(g,"%ld",s);
return 0;
}