Pagini recente » Cod sursa (job #3288335) | Cod sursa (job #59370) | Cod sursa (job #2088439) | Cod sursa (job #3264246) | Cod sursa (job #555184)
Cod sursa(job #555184)
#include <stdio.h>
using namespace std;
#define maxn 5000005
int a[maxn],deque[maxn];
int sum;
int main(void)
{ int n,k,prim,ultim,i;
FILE *fin=fopen("deque.in","r");
FILE *fout=fopen("deque.out","w");
fscanf(fin,"%d%d",&n,&k);
for(i=1;i<=n;i++) fscanf(fin,"%d",(a+i));
prim=1; ultim=0;
for(i=1;i<=n;i++)
{ while(prim<=ultim && a[i]<=a[deque[ultim]]) ultim--;
deque[++ultim]=i;
if(deque[prim]==i-k) prim++;
if(i>=k) sum+=a[deque[prim]];
}
fprintf(fout,"%d",sum);
fclose(fin); fclose(fout);
return 0;
}