Pagini recente » Cod sursa (job #2516915) | Cod sursa (job #26988) | Cod sursa (job #1316400) | Cod sursa (job #998485) | Cod sursa (job #345277)
Cod sursa(job #345277)
#include<stdio.h>
#define MAX 5000005
FILE *fin=fopen("deque.in","r"),
*fout=fopen("deque.out","w");
int dq[MAX],A[MAX],N,K;
int min,li,lf;
long long S;
int main()
{
fscanf(fin,"%d %d",&N,&K);
for(int i=1;i<=N;i++)
fscanf(fin,"%d",&A[i]);
A[0]=10000100;
li=lf=1;
for(int i=1;i<=K;i++)
{
while(A[dq[lf]]>=A[i] && li<=lf)
--lf;
dq[++lf]=i;
}
li=1;S+=(long long)A[dq[li]];
for(int i=K+1;i<=N;i++)
{
if(i-dq[li]>=K)
++li;
while(A[dq[lf]]>=A[i] && li<=lf)
--lf;
dq[++lf]=i;
S+=(long long)A[dq[li]];
}
fprintf(fout,"%lld\n",S);
return 0;
}