Pagini recente » Cod sursa (job #1764600) | Cod sursa (job #83822) | Cod sursa (job #1233998) | Cod sursa (job #1472988) | Cod sursa (job #1607686)
#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]],printf("%ld ",v[deque[back]]);
}
fclose(f);
FILE*g=fopen("deque.out","w");
fprintf(g,"%lld",sum);
fclose(g);
system("PAUSE");
return 0;
}