60分求助!

P1678 烦恼的高考志愿

micmic @ 2022-04-01 15:50:37

#include<iostream>
#include<algorithm>
#include<functional>
using namespace std;

int m,n;    //m学校   n学生 
int a[100005];  //分数线
int b[100005];  //估分 
//要求学校的分数线和估分相差最小,求这个相差值的和
int cnt;

int main(){
    cin>>m>>n;
    for(int i=0;i<m;i++)
        cin>>a[i];
    for(int i=0;i<n;i++)
        cin>>b[i]; 
    sort(a,a+m);
    sort(b,b+n);
    int k;
    for(int i=0;i<n;i++){
        //找出第一个大于等于b[i]的分数线a[k],那么要找的差值
        //一定是a[k]-b[i] 或 b[i]-a[k-1] 
            k=lower_bound(a,a+m,b[i])-a; 
            cnt+=min(a[k]-b[i],b[i]-a[k-1]);
    }
    cout<<cnt;
}

|