Pagini recente » Cod sursa (job #2645651) | Cod sursa (job #2659141) | Cod sursa (job #2369441) | Cod sursa (job #212459) | Cod sursa (job #2625735)
#include <iostream>
using namespace std;
FILE * fin, * fout;
int v[5000003];
int Dequeue[5000003];
int fr = 1;
int bk = 0;
int main (){
fin = fopen("deque.in","r");
fout = fopen("deque.out","w");
int N, K;
fscanf(fin,"%d%d\n",&N,&K);
for ( int i = 1; i <= N; i++)
fscanf(fin,"%d", v+i);
long long int sum = 0;
for ( int i = 1; i <= N; i++ ){
while (fr <= bk && v[i] <= v[ Dequeue[bk] ]) bk--;
Dequeue[++bk] = i;
if (Dequeue[fr] == i-K) fr++;
if (i >= K) sum += v[ Dequeue[fr]];
}
fprintf(fout,"%lld",sum);
fclose(fin);
fclose(fout);
return 0;
}