彭科壹 @ 2021-10-04 14:32:33
#include <bits/stdc++.h>
using namespace std;
long long q,w,a[100000000],b[100000000],ans=0;
int main()
{
cin>>q>>w;
for(int i=1;i<=q;i++){
cin>>a[i];
}
for(int i=1;i<=w;i++){
cin>>b[i];
}
for(int i=1;i<=w;i++){
int left=1,right=q;
int mid=(left+right)/2;
while(left<right){
if(left<=mid){
left=mid+1;
}
else{
right=mid;
}
}
ans+=a[mid]-b[i];
}
cout<<ans;
return 0;
}
by Spoilme @ 2021-10-07 21:42:07
不是判断mid与left的大小, 当然q=right+1;
而是判断a[mid],b[i],如果a[mid]>b[i]那么right=mid;
如果a[mid]<=b[i]那么left=mid+1;
当算完以后,ans+=mid(abs(a[l]-x),abs(a[l-l]-x);
这只是70分代码
要判断一下,a[1]的值也有可能大于b[i]的值,所以在ans+=mid(abs(a[l]-x),abs(a[l-l]-x);前要加上if(a[1]>=b[i])ans+=a[1]-b[i];
这是100分代码
希望你能写对!!!