10pts:
a[i].bi+query1(1,0,c,(n-1)/2)+query2(1,0,c,(n-1)/2)<=f
a[i].bi+query1(1,0,200000,(n-1)/2)+query2(1,0,200000,(n-1)/2)<=f
权值线段树的上界不是c
50pts:
int query1(int p,int l,int r,int k){
if(l==r){
return k*l;//本行如果写tree1[p].val会错,原因是该位置数量可能大于k个
}
int mid=l+r>>1;
if(tree1[p<<1].cnt>=k){
return query1(p<<1,l,mid,k);
}
else{
return query1(p<<1|1,mid+1,r,k-tree1[p<<1].cnt)+tree1[p<<1].val;
}
}