void mdf(int p,int l,int r,ll d)
{
if(s[p].l>=l && s[p].r<=r)
{
s[p].tag+=d;
s[p].sum+=ll(s[p].r-s[p].l+1)*d;
return;
}
if(s[p].l>r || s[p].r<l)
{
return;
}
spr(p);
mdf(p<<1,l,r,d);mdf(p<<1|1,l,r,d);
return;
}
ll qry(int p,int l,int r)
{
if(s[p].l>=l && s[p].r<=r)
{
return s[p].sum;
}
if(s[p].l>r || s[p].r<l)
{
return 0;
}
spr(p);
ll res=0;
res+=(p<<1,l,r);res+=(p<<1|1,l,r);
return res;
}
引以为戒, 警示后人