如果你WA1 4 6且想要用二分找到第一个位置使得可以放在最后一个集合 不可以
int l=1,r=m,idx=-1; while(l<=r){ int mid=(l+r)/2; if((a[i]+mid)*(a[i]+mid)>=(a[i]+1)*(a[i]+1)){ idx=mid,r=mid-1; } else{ l=mid+1; } }
而是要严格大于 不然会多算一部分