ACM 训练日志记录 · 思考 · 成长 提交 / 修改记录
郭一鸣 / 题目列表训练档案
导出

P1678 烦恼的高考志愿

来源:洛谷 ★ 1000

本题活力0.24按难度、完成结果与训练证据估算

算法如山行则将至

题目描述

计算每位学生与最接近分数的学校差值的总和。

代码

#include<iostream>
#include<algorithm>
#include<cmath>
using namespace std;
int a[100010];
int main()
{
    int m,n;
    cin>>m>>n;
    for(int i=1;i<=m;i++)cin>>a[i];
    sort(a+1,a+m+1);
    long long ans=0;
    for(int i=1;i<=n;i++)
    {
        int x;
        cin>>x;
        int l=1,r=m;
        while(l<r)
        {
            int mid=(l+r)/2;
            if(a[mid]>=x)r=mid;
            else l=mid+1;
        }
        if(l==1)ans+=abs(a[l]-x);
        else ans+=min(abs(a[l]-x),abs(a[l-1]-x));
    }
    cout<<ans<<endl;
    return 0;
}