Pagini recente » Cod sursa (job #798039) | Cod sursa (job #907429) | Cod sursa (job #157716) | Cod sursa (job #2368274) | Cod sursa (job #1428014)
#include <stdio.h>
#define buffSize 32762
int pr,ul,i,ok=1,l,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; l=0;
if (buffer[ind]=='-') {
ind++; l=1;
if (ind==buffSize)
{
fread( buffer, 1, buffSize, stdin );
ind = 0;
}
if (buffer[ind]>='0' && buffer[ind]<='9') {
x=-(buffer[ind]-'0'); ind++;
}
if (ind==buffSize)
{
fread( buffer, 1, buffSize, stdin );
ind = 0;
}
}
if (x==0 && l==1) {
while(( buffer[ind]<'0' || buffer[ind]>'9' ) && (buffer[ind]!='-'))
{
ind++;
if( ind==buffSize )
{
fread( buffer, 1, buffSize, stdin );
ind = 0;
}
}
}
while( buffer[ind]>='0' && buffer[ind]<='9' )
{
if (l==1) x=x*10-(buffer[ind]-'0'); else 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);
pr=1; ul=0; s=0;
for (i=1;i<=n;i++) read (t[i]);
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;
}