Pagini recente » Cod sursa (job #1477227) | Cod sursa (job #841651) | Cod sursa (job #924321) | Cod sursa (job #2834332) | Cod sursa (job #1427998)
#include <stdio.h>
#define buffSize 32762
int pr,ul,i,ok=1,n,k,deque[5000000],t[5000000],ind;
long long s;
char buffer[buffSize];
void read(int &x)
{
if(ok)
{
fread( buffer, 1, buffSize, stdin );
ok = 0; ind = 0;
}
x = 0;
if (buffer[ind]=='-' && buffer[ind+1]>='0' && buffer[ind+1]<='9' ) {
ind++; x=-(buffer[ind]-'0'); ind++;
}
while( buffer[ind]>='0' && buffer[ind]<='9' )
{
x = x*10 + (buffer[ind]-'0');
ind++;
if( ind==buffSize )
{
fread( buffer, 1, buffSize, stdin );
ind = 0;
}
}
while(( buffer[ind]<'0' || buffer[ind]>'9' ) && (buffer[ind]!='-'))
{
ind++;
if( ind==buffSize )
{
fread( buffer, 1, buffSize, stdin );
ind = 0;
}
}
}
int main(){
freopen("deque.in","r",stdin);
freopen("deque.out","w",stdout);
read(n); read(k);
for (i=1;i<=n;i++) read(t[i]);
pr=1; ul=0; s=0;
for (i=1;i<=n;i++) {
while (pr<=ul && t[deque[ul]]>=t[i]) ul--;
ul=ul+1; deque[ul]=i;
if (i-deque[pr]==k) pr++;
if (i>=k) s+=t[deque[pr]];
}
printf("%lld",s);
return 0;
}