Pagini recente » Cod sursa (job #3172393) | Cod sursa (job #1701952) | Cod sursa (job #2144119) | Cod sursa (job #2742042) | Cod sursa (job #3184858)
#include <stdlib.h>
#include <stdio.h>
int main() {
freopen("deque.in","r",stdin);
freopen("deque.out","w",stdout);
int n,k;
long long rez=0;
scanf("%d",&n);
scanf("%d",&k);
int *dequeue=(int *) malloc(sizeof(int)*n);
int *arr=(int *) malloc(sizeof(int)*n);
int start_index=0,end_index=0;
for(int i=0;i<n;i++){
scanf("%d",&arr[i]);
if(i!=0)
while(arr[i]<=arr[dequeue[end_index-1]] && end_index>start_index)
end_index--;
dequeue[end_index++]=i;
if(dequeue[start_index]<i-k+1)
start_index++;
if(i>=k-1)
rez+=arr[dequeue[start_index]];
}
printf("%lld",rez);
free(dequeue);
free(arr);
return 0;
}