试一下这个样例
输入 :
0 0
10
0
输出 :
10
错误输出 :0 或 -10
0 :因为访问到了a[n + 1]
-10:没加绝对值
代码:
#include <bits/stdc++.h>
#define int long long
using namespace std;
const int N = 100010;
int n , m , a[N] , b , ans ;
signed main () {
cin >> n >> m;
for (int i = 1;i <= n;i ++) {
cin >> a[i];
}sort (a + 1,a + n + 1);
for (int i = 1;i <= m;i ++) {
cin >> b;
int l = 1,r = n;
while (l < r) {
int mid = (l + r + 1) / 2;
if (a[mid] <= b) {
l = mid;
}else r = mid - 1;
}
if (r == n)ans += abs(b - a[r]);
else ans += min (abs (b - a[r]) , abs (b - a[r + 1]));
}
cout << ans;
return 0;
}