Pagini recente » Cod sursa (job #1034723) | Monitorul de evaluare | Cod sursa (job #1282992) | Cod sursa (job #305864) | Cod sursa (job #1409932)
#include <cstdio>
using namespace std;
long long int v[5000005],deque[5000005];
int main(){
long long int n,front,back,sum,i,k;
freopen("deque.in", "r", stdin);
freopen("deque.out", "w", stdout);
scanf("%lld %lld",&n,&k);
for(i = 1;i <= n;i++){
scanf("%lld",&v[i]);
}
front = 1;
back = sum = 0;
for(i = 1;i <= n;i++){
while(front <= back && v[i] <= v[deque[back]]){
back--;
}
deque[++back] = i;
if(deque[front] == i-k){
front++;
}
if(i >= k){
sum += v[deque[front]];
}
}
printf("%lld\n",sum);
return 0;
}