求助大佬的改正,只有70分
查看原帖
求助大佬的改正,只有70分
1136827
liweiergg楼主2024/8/5 15:09
#include<iostream> 
#include<map>
#include<algorithm>
#include<math.h>
#define int long long
const int N = 1e5 + 10;
using namespace std;
int m, n, sum = 0;
int a[N], b[N];
int find(int x) {
	int l = 1, r = m;
	while (l < r) {
		int mid = l + (r - l) / 2;
		if (a[mid] - x == 0)return 0;
		if (a[mid] - x > 0) {
			r = mid;
		}
		if (a[mid] - x < 0) {
			l = mid + 1;
		}
	}
	return min(abs(a[l] - x), abs(a[l - 1] - x));
}
signed main() {
	cin >> m >> n;
	for (int i = 1; i <= m; i++)cin >> a[i];
	sort(a + 1, a + 1 + m);
	if (m != 1) {
		for (int i = 1; i <= n; i++) {
			cin >> b[i];
			sum += find(b[i]);
		}
		cout << sum;
	}
	else {
		for (int i = 1; i <= n; i++) {
			cin >> b[i];
			sum += abs(b[i] - a[1]);
		}
		cout << sum;
	}
	return 0;
}
2024/8/5 15:09
加载中...