Pagini recente » Cod sursa (job #148807) | Cod sursa (job #649668) | Cod sursa (job #1356358) | Cod sursa (job #2998675) | Cod sursa (job #344271)
Cod sursa(job #344271)
#include <iostream>
#include <cstdio>
#include <cstdlib>
#define MAXN 5000010
using namespace std;
long A[MAXN],Deque[MAXN];
long Back,Front,N,K;
long long int res;
int main() {
long i;
freopen("deque.in","r",stdin);
freopen("deque.out","w",stdout);
scanf("%ld%ld",&N,&K);
for (i=0;i<N;++i) scanf("%ld",&A[i]);
Back = -1;
Front = 0;
for (i=0;i<N;++i) {
while (Front <= Back && A[i] <= Deque[Back]) Back--;
Deque[++Back] = A[i];
if ((i-K>=0)&&(Deque[Front] == A[i-K])) Front++;
if (i>=K-1) res = res + (long long int)Deque[Front];
}
printf("%lld\n",res);
fclose(stdin);
fclose(stdout);
return 0;
}