#include <cstdio>
#include <algorithm>
using namespace std;
long long a[1000005], b[1000005], n, m, suma, sumb, j, mi;
int main()
{
scanf("%lld %lld", &n, &m);
for (long long i = 0; i < n; i++)
{
scanf("%lld", &a[i]);
suma += a[i];
}
for (long long i = 0; i < m; i++)
{
scanf("%lld", &b[i]);
sumb += b[i];
}
sort(a, a + n);
sort(b, b + m);
for (long long i = 0; i < m; i++)
{
for (; a[j] < b[i] && j < n; j++) {}
if (abs(a[j] - b[i]) < abs(b[i] - a[j - 1]))
{
mi += abs(a[j] - b[i]);
}
else
{
mi += abs(b[i] - a[j - 1]);
}
j++;
}
printf("%lld\n", mi);
return 0;
}
样例过了,没有用二分但最慢的点也只跑了 23ms 。