Pagini recente » Cod sursa (job #113177) | Cod sursa (job #2943120) | Cod sursa (job #1078389) | Utilizatori inregistrati la Infoarena Monthly 2012 - Runda 12 | Cod sursa (job #345272)
Cod sursa(job #345272)
#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 S,min,li,lf;
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+=A[dq[li]];
printf("%d",S);
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+=A[dq[li]];
}
fprintf(fout,"%d\n",S);
return 0;
}