Pagini recente » Cod sursa (job #917269) | Cod sursa (job #983049) | Cod sursa (job #59641) | Cod sursa (job #1436533) | Cod sursa (job #1289423)
#include <stdio.h>
#include <stdlib.h>
int v[5000001],s[10000001];
int main()
{
int i,n,k,p,u,min;
long long sum;
FILE *fin,*fout;
fin=fopen("deque.in","r");
fout=fopen("deque.out","w");
fscanf(fin,"%d%d",&n,&k);
for(i=1; i<=n; i++)
fscanf(fin,"%d",&v[i]);
p=1;
s[p]=1;
u=2;
min=v[1];
for(i=2; i<=k; i++)
{
while(v[i]<v[s[u-1]] && u>p)
u--;
s[u]=i;
u++;
if(v[i]<min)
min=v[i];
}
sum=(long long)min;
for(; i<=n; i++)
{
while(s[p]<i-k+1 && p<u)
p++;
while(v[i]<v[s[u-1]] && u>p)
u--;
s[u]=i;
u++;
sum+=(long long)v[s[p]];
}
fprintf(fout,"%lld",sum);
fclose(fin);
fclose(fout);
return 0;
}