求助!Subtask #1没过!!!
查看原帖
求助!Subtask #1没过!!!
1337186
NathanChen楼主2024/8/26 12:24
#include <bits/stdc++.h>
using namespace std;
long long n, m, ans = 0;
long long a[10000005], b[10000005];

long long search(long long x) {
	long long mid, l = 1, r = m;
	if (x < a[1]) {
		return a[1] - x;
	}
	while (l <= r) {
		mid = (l + r) / 2;
		if (a[mid] < x) {
			l = mid + 1;
		}
		if (a[mid] > x) {
			r = mid - 1;
		}
		if (a[mid] == x) {
			return 0;
		}
	}
	return min(abs(x - a[l]), abs(x - a[r]));
}

int main() {
	scanf("%d%d", &m, &n);
	for (int i = 1; i <= m; i++) {
		scanf("%d", &a[i]);
	}
	sort(a + 1, a + m + 1);
	for (int i = 1; i <= n; i++) {
		scanf("%d", &b[i]);
		ans += search(b[i]);
	}
	printf("%d", ans);
	return 0;
}

二分还是慢吗(>﹏<)...

2024/8/26 12:24
加载中...