Pagini recente » Cod sursa (job #894213) | Cod sursa (job #639695) | Cod sursa (job #1204155) | Cod sursa (job #996394) | Cod sursa (job #555198)
Cod sursa(job #555198)
#include <stdio.h>
using namespace std;
#define maxn 5000005
int a[maxn],deque[maxn];
long long 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,"%lld",sum);
fclose(fin); fclose(fout);
return 0;
}