蒟蒻求助!!!50 UNAC

P1678 烦恼的高考志愿

__notTrueLight__ @ 2024-05-18 18:13:55

2,#3,#5,#9,#10 WA

代码如下:

#include<bits/stdc++.h>
using namespace std;

inline long long erf_find(long long lis[],long long len,long long find){//二分查找函数 
    long long l=0,r=len-1;//定
    long long mid;//        义 
    while(l<r){//                查 
        mid=(l+r)>>1;//          找  
        if(lis[mid]>find)r=mid;//过 
        else l=mid+1;//          程 
    }
    if(lis[len-1]<find)l=len;//特判*1 
    if(l==0 || l==len-1)return lis[l];//防越界 
    else if(lis[l]-find<find-lis[l-1])return lis[l];//特判 
    else return lis[l-1];//                            *2 
}

int main(){
    long long n,m,res=0,sunn=0;//定义 
    cin>>m>>n;//输入 
    long long nlis[n],mlis[m];//定义 
    for(long long i=0;i<m;i++){//输入
        cin>>mlis[i];//输入
    }
    for(long long i=0;i<n;i++){//输入
        cin>>nlis[i];//输入
    }
    sort(mlis,mlis+m);//排序 
    for(long long i=0;i<n;i++){
        res=erf_find(mlis,m,nlis[i])-nlis[i];//查找并计算 
        sunn+=abs(res);//增加 
    }
    cout<<sunn;

    return/*191981*/0;
}
/*
6 7
1 1 4 5 1 4
1 9 1 9 8 1 0
//只是一个民间样例
12

7 6 
1 9 1 9 8 1 0 
1 1 4 5 1 4
//只是两个民间样例
9 
*/

by __notTrueLight__ @ 2024-07-30 21:54:48

已AC,此贴结。


|