50分求助
查看原帖
50分求助
1080416
eeezhengdeshi楼主2023/11/12 20:24
#include <iostream>
#include <cmath>
#include <algorithm>
using namespace std;
long long a[1000000], b[1000000], n, m;

int gu(int t) {
	long long mid = m / 2 + 1;
	if (a[mid] == t)
		return 0;
	if (a[1] > t) {
		return a[1] - t;
	}
	while (a[mid] > t) {
		mid /= 2;
	}
	long dp = 1000000;
	for (long i = mid; i <= 2 * mid ; i++) {
		long g = fabs(t - a[i]);
		dp = min(dp, g);
	}
	return dp;
}

int main(void) {
	long long sum = 0;
	cin >> m >> n;
	for (int i = 1; i <= m; i++) {
		cin >> a[i];
	}
	for (long i = 1; i <= n; i++) {
		cin >> b[i];
	}
	sort(a + 1, a + m);
	for (long i = 1; i <= n; i++) {
		sum += gu(b[i]);
	}
	cout << sum;
}

二分用起来迷迷糊糊的

2023/11/12 20:24
加载中...