Pagini recente » Cod sursa (job #2174034) | Cod sursa (job #324877) | Cod sursa (job #2499585) | Cod sursa (job #2586428) | Cod sursa (job #1060865)
#include<fstream>
using namespace std;
long long s=0,v[5000001],w[5000001], p=0,k;
void add(long long x,long long i )
{
v[++p]=x;
w[p]=i;
long long t=p,t2=t/2,t3;
if(t/2>0)while(v[t]<v[t/2])
{
v[t]=v[t2]+v[t];
v[t2]=v[t]-v[t2];
v[t]=v[t]-v[t2];
w[t]=w[t2]+w[t];
w[t2]=w[t]-w[t2];
w[t]=w[t]-w[t2];
t=t2;t2=t2/2;
if(t2<=0)break;
}
while(w[1]<=i-k)
{
v[1]=v[p];
w[1]=w[p];
p--;t=1;t3=2*t;
if(t3+1<=p)
while(v[t]>v[t3]||v[t]>v[t3+1])
if(v[t3]<v[t3+1])
{ v[t]=v[t]+v[t3];
v[t3]=v[t]-v[t3];
v[t]=v[t]-v[t3];
w[t]=w[t]+w[t3];
w[t3]=w[t]-w[t3];
w[t]=w[t]-w[t3];
t=t3;t3=t3*2;
if(t3+1>p)break;
}
else
{ v[t]=v[t]+v[t3+1];
v[t3+1]=v[t]-v[t3+1];
v[t]=v[t]-v[t3+1];
w[t]=w[t]+w[t3+1];
w[t3+1]=w[t]-w[t3+1];
w[t]=w[t]-w[t3+1];
t=t3+1;t3=t*2;
if(t3+1>p)break;
}
if(t3==p&&v[t]>v[t3])
{ v[t]=v[t]+v[t3];
v[t3]=v[t]-v[t3];
v[t]=v[t]-v[t3];
w[t]=w[t]+w[t3];
w[t3]=w[t]-w[t3];
w[t]=w[t]-w[t3];
t=t3;t3=t3*2;
}
}
if(i>=k)
{
s=s+v[1];
}
}
int main()
{
ifstream fcin("deque.in");
ofstream fcout("deque.out");
long long n,i,x;
fcin>>n>>k;
for(i=1;i<=n;i++)
{fcin>>x;
add(x,i);
}
fcout<<s<<'\n';
return 0;
}