Pagini recente » Cod sursa (job #132338) | Cod sursa (job #1712857) | Cod sursa (job #1633828) | Cod sursa (job #3246879) | Cod sursa (job #247117)
Cod sursa(job #247117)
#include<stdio.h>
#pragma pack(push,1)
int sp,n,k,lim,dq[5000000],pos[5000000];
long long sum;
void pop_first()
{
/*for(int i=1;i<=lim;++i)
{
dq[i]=dq[i+1];
pos[i]=pos[i+1];
}
--lim;*/
}
int add_to_dq(int aux,int poz)
{
int i=lim;
if(lim)
while(aux<dq[i]&&i>=sp)
{
--i;
if(i==lim+1)
break;
}
++i;
lim=i;
dq[i]=aux;
pos[i]=poz;
}
int main()
{
int aux,nr=0;
freopen("deque.in","rb",stdin);
freopen("deque.out","w",stdout);
scanf("%d%d",&n,&k);
sp=1;
for(int i=1;i<=n;++i)
{
if(i-pos[sp]>=k+1)
++sp;
//pop_first();
if(nr==k)
{
sum+=dq[sp];
nr--;
}
scanf("%d",&aux);
add_to_dq(aux,i);
++nr;
}
sum+=dq[sp];
printf("%lld",sum);
return 0;
}