洛谷 1678 烦恼的高考志愿

来源:互联网 发布:安装监控需要网络吗 编辑:程序博客网 时间:2024/05/16 19:41

题目链接:烦恼的高考志愿


题目大意:给你m个学校录取分,然后再给你n个学生分,枚举n个学生分找出上面m个分里面与每个学生分差值最小的值,然后差值做贡献,算最后的贡献


题目思路:直接二分即可,找刚好大于等于它的第一个数和刚好小于等于它的第一个数,特判一下第一个学校录取分就大于当前分的情况

#include <bits/stdc++.h>using namespace std;typedef long long ll;ll m,n,x,a[1000005];int main(){    while(~scanf("%lld%lld",&m,&n)){        for(ll i = 0;i < m;i++)            scanf("%lld",&a[i]);        sort(a,a+m);        ll sum = 0;        int minn;        for(ll i = 0;i < n;i++){            scanf("%lld",&x);            if(a[lower_bound(a,a+m,x)-a] == a[0]) sum += abs(x-a[0]);            else sum += min(abs(x-a[lower_bound(a,a+m,x)-a]),abs(x-a[lower_bound(a,a+m,x)-a-1]));        }        printf("%lld\n",sum);    }    return 0;}


0 0
原创粉丝点击