Cod sursa(job #442423)
#include<iostream>
#include<fstream>
#define max_N 5000005
using namespace std;
ifstream fin("deque.in");
ofstream fout("deque.out");
int V[max_N], Deque[max_N], Front, Back, i, K, N;
long long Sum;
int main()
{
fin >> N >> K;
for(i = 1; i <= N; i ++)
fin >> V[i];
Front = 1, Back = 0;
for(i = 1; i <= N; i ++)
{
while(V[i] <= V[Deque[Back]] && Back >= Front) Back --;
Deque[++Back] = i;
if(Deque[Front] == i - K)
Front ++;
if(i >= K)
Sum += V[Deque[Front]];
}
fout << Sum;
return 0;
}