正经题解|烦恼的高考志愿
2024-03-26 10:42:49
发布于:浙江
124阅读
0回复
0点赞
分析题目可以发现,每个学生所报的学校一定是大于等于预估分数线的第一个学校或者小于预估分数线的第一个学校,因此可以使用 找到大于等于预估分数线的第一个学校,然后前面一个就是小于预估分数线的第一个学校,两个取 。
#include <iostream>
#include <algorithm>
using namespace std;
const int maxn = 1e5 + 9;
int a[maxn];
int main() {
int m, n;
cin >> m >> n;
for (int i = 1; i <= m; i++) cin >> a[i];
sort(a + 1, a + 1 + m);
long long ans = 0;
while (n--) {
int b;
cin >> b;
int mi = 1e9;
int id = lower_bound(a + 1, a + 1 + m, b) - a;
if (id <= m) mi = min(mi, a[id] - b);
id--;
if (id) mi = min(mi, b - a[id]);
ans += mi;
}
cout << ans;
return 0;
}
这里空空如也
有帮助,赞一个