Pagini recente » Cod sursa (job #2401043) | Cod sursa (job #2776755) | Cod sursa (job #2402196) | Cod sursa (job #3032913) | Cod sursa (job #1770177)
#include <stdio.h>
const int buff_size=4096;
char buff[buff_size];
int _i=buff_size;
int n,k,pr,ul,a[5000009],d[5000009],i;
long long sum;
int next_int(FILE * in)
{
char x,y,k=1;
int z=0;
if (_i==buff_size)
y=fread(buff,buff_size,1,in),_i=0;
x=1;
while ((x<48 || x> 57) && x!='-')
{
x=buff[_i];
_i++;
if (_i==buff_size)
{
y=fread(buff,buff_size,1,in);
_i=0;
}
}
while (x>=48 && x<=57 || x=='-')
{
if (x=='-')
k=-1; else
z=(z<<1)+(z<<3)+x-48;
x=buff[_i];
_i++;
if (_i==buff_size)
{
y=fread(buff,buff_size,1,in);
_i=0;
}
}
return z*k;
}
int main(int argc, char const *argv[])
{
freopen("deque.in","r",stdin);
freopen("deque.out","w",stdout);
n=next_int(stdin);
k=next_int(stdin);
for (i=0;i<n;++i)
a[i]=next_int(stdin);
d[0]=0;
pr=0;ul=0;
for (i=1;i<n;++i)
{
while (pr<=ul && a[i]<=a[d[ul]]) ul--;
d[++ul]=i;
if (i-d[pr]>=k) pr++;
if (i+1>=k) sum+=a[d[pr]];
}
printf("%lld\n",sum);
fclose(stdin);
fclose(stdout);
return 0;
}