70,急

P1678 烦恼的高考志愿

AT_WHY_ZD @ 2024-03-24 08:43:33

#include <bits/stdc++.h>
using namespace std;
#define ll long long
int m,n;
int a[1000050];
int b[1000050];        
int main() {
    cin>>n>>m;
    for(int i=1;i<=n;i++){
        cin>>a[i];
    }
    sort(a+1,a+1+n);
    int cnt=0;
    for(int j=1;j<=m;j++){
        cin>>b[j];
        int k=upper_bound(a,a+n+1,b[j])-a;
        if(abs(a[k]-b[j])<abs(a[k-1]-b[j])){
            cnt+=abs(a[k]-b[j]);
        }else{
            cnt+=abs(a[k-1]-b[j]);
        }
    }
    cout<<cnt<<endl;
    return 0;
}

upper_bound做法,70分玄关求调整


by under_hole @ 2024-03-25 21:31:23

你没判断k=0的时候啊

if(abs(a[k]-b[j])<abs(a[k-1]-b[j])){
    //k=0时a[k-1]指向
    cnt+=abs(a[k]-b[j]);
    }
else{
    cnt+=abs(a[k-1]-b[j]);
    //同上
}

|