0
已采纳
李博然
资深守护
资深守护
输入n,m;
输入a数组
排序a数组
循环m次
输入k
二分查找第一个比k大的数
然后判断是a[l]-k小还是k-a[l-1]小
核心:
cin>>k;
int l=1,r=n;
while(l<r)
{
int mid=(l+r)/2;
if(a[mid]<=k) l=mid+1;
else r=mid;
}
if(a[1]>k) ans+=a[1]-k;
else if(a[n]<k) ans+=k-a[n];
else if(l!=1) ans+=min(k-a[l-1],a[l]-k);
else ans+=a[l]-k;
求采纳
李博然在2021-07-11 10:03:38追加了内容
最后再输出ans就可ac呐
0