Pagini recente » Cod sursa (job #168912) | Cod sursa (job #692609) | Cod sursa (job #2266063) | Cod sursa (job #2821399) | Cod sursa (job #1607689)
#include <stdio.h>
#include <stdlib.h>
int main(){
unsigned long n,k,*deque,back=0,front=1;
long long sum=0;
long *v;
FILE*f=fopen("deque.in","r");
fscanf(f,"%lu %lu",&n,&k);
v=(long*)malloc(n*sizeof(long));
deque=(unsigned long*)malloc(n*sizeof(unsigned long));
for(unsigned long i=0;i<n;i++)
fscanf(f,"%ld",&v[i]);
deque[0]=0;
for(unsigned long i=1;i<n;i++){
while(back<front&&v[deque[front-1]]>v[i])
front--;
deque[front++]=i;
if(deque[back]+k==i)
back++;
if(i+2>k)
sum+=v[deque[back]];
}
fclose(f);
FILE*g=fopen("deque.out","w");
fprintf(g,"%lld",sum);
fclose(g);
return 0;
}