AT_WHY_ZD @ 2024-03-24 08:43:33
#include <bits/stdc++.h>
using namespace std;
#define ll long long
int m,n;
int a[1000050];
int b[1000050];
int main() {
cin>>n>>m;
for(int i=1;i<=n;i++){
cin>>a[i];
}
sort(a+1,a+1+n);
int cnt=0;
for(int j=1;j<=m;j++){
cin>>b[j];
int k=upper_bound(a,a+n+1,b[j])-a;
if(abs(a[k]-b[j])<abs(a[k-1]-b[j])){
cnt+=abs(a[k]-b[j]);
}else{
cnt+=abs(a[k-1]-b[j]);
}
}
cout<<cnt<<endl;
return 0;
}
upper_bound做法,70分玄关求调整
by under_hole @ 2024-03-25 21:31:23
你没判断k=0的时候啊
if(abs(a[k]-b[j])<abs(a[k-1]-b[j])){
//k=0时a[k-1]指向
cnt+=abs(a[k]-b[j]);
}
else{
cnt+=abs(a[k-1]-b[j]);
//同上
}