求助qwq
我是用二分做的,大家能看一下我的代码有什么问题吗
话不多说,上代码
#include<bits/stdc++.h>
using namespace std;
long long m,n,a[100010],b[100010],ans;
int bs(int x){
int l=1,r=n;
int ans;
while(l<=r){
int mid=(l+r)>>1;
if(a[mid]<=x){
l=mid+1;
ans=mid;
}
else r=mid-1;
}
return ans;
}
int main(){
scanf("%lld%lld",&m,&n);
for(int i=1;i<=m;i++){
scanf("%lld",&a[i]);
}
sort(a+1,a+m+1);
for(int i=1;i<=n;i++){
scanf("%lld",&b[i]);
}
for(int i=1;i<=m;i++){
if(b[i]<=a[1]){
ans+=a[1]-b[i];
}
else{
ans+=min(abs(bs(a[i-1])-bs(b[i])),abs(bs(a[i])-bs(b[i])));
}
}
printf("%lld",ans);
return 0;
}
(改对必关)