Pagini recente » Cod sursa (job #38619) | Cod sursa (job #1775221) | Cod sursa (job #962333) | Cod sursa (job #1457951) | Cod sursa (job #1694494)
#include <cstdio>
#define NMax 5000005
int v[NMax];
int coada[NMax];
int main(){
freopen("deque.in","r",stdin);
freopen("deque.out","w",stdout);
int n,k,i,inc,sf;
long long smin=0;
scanf("%d %d",&n,&k);
for( i = 1; i <= n; ++i ) scanf("%d",&v[i]);
inc = 1;
sf = 0;
for( i = 1; i <= k ; ++i )
{
while( inc <= sf && v[i] <= v[ coada[sf] ] )
sf--;
coada[++sf] = i;
}
for(; i <= n; ++i)
{
smin += v[ coada[inc] ];
while( inc <= sf && coada[inc] <= i - k )
inc++;
while( inc <= sf && v[i] <= v[ coada[sf] ] )
sf--;
coada[++sf] = i;
}
smin += v[ coada[inc] ];
printf("%lld\n",smin);
return 0;
}