50 pts
long long query(long long x,long long l,long long r,long long k)
{
if(l==r)return tr[x].v;
long long mid=(l+r)>>1;
if(k<=tr[lc[x]].p)return query(lc[x],l,mid,k);
else if(k>tr[lc[x]].p)return tr[lc[x]].v+query(rc[x],mid+1,r,k-tr[lc[x]].p);
}
100 pts
long long query(long long x,long long l,long long r,long long k)
{
if(l==r)return k*l;
long long mid=(l+r)>>1;
if(k<=tr[lc[x]].p)return query(lc[x],l,mid,k);
else if(k>tr[lc[x]].p)return tr[lc[x]].v+query(rc[x],mid+1,r,k-tr[lc[x]].p);
}
需要注意一个节点可能会有多个元素,如果元素个数大于剩余的 k 但是直接返回所有元素的和就会导致 WA。