Pagini recente » Cod sursa (job #723367) | Cod sursa (job #1128761) | Cod sursa (job #380936) | Cod sursa (job #1087100) | Cod sursa (job #625554)
Cod sursa(job #625554)
#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;
}