Pagini recente » Cod sursa (job #1829306) | Cod sursa (job #301648) | Cod sursa (job #1535337) | Cod sursa (job #2193900) | Cod sursa (job #625550)
Cod sursa(job #625550)
#include<cstdio>
#define Nmax 5000001
int n, k, a[Nmax], c[Nmax];
long long suma;
void ReadData()
{
scanf("%d %d",&n,&k);
for( int i=1;i<=n;i++)
{
scanf("%d",a+i);
}
}
void CalcSumaMin()
{
int prim=1, ultim = 0,i;
for( i = 1; i<=n;i++)
{
while( prim <= ultim && a[i] <= a[c[ultim]])
ultim--;
c[++ultim]=i;
if (c[prim] == i-k)
prim++;
if (i >= k)
suma += a[ c[prim]];
}
}
int main()
{
freopen("deque.in","r",stdin);
freopen("deque.out","w",stdout);
ReadData();
CalcSumaMin();
printf("%lld\n",suma);
return 0;
}