40分求助!..4,5,7,9过了其他wa..救救孩子8
查看原帖
40分求助!..4,5,7,9过了其他wa..救救孩子8
613158
wff13楼主2021/12/7 14:25
#include<iostream>
#include<cstdio>
#include<cstring>
#include<algorithm>
#include<cmath>
using namespace std;

const int N1=1000010;
const int N2=1000010;

int grade[N1],sch[N2];
int m,n;



bool check(int mid,int i)
{
 return  (grade[i]-sch[mid])>=0;
}
int main()
{
    int tol=0;
    cin>>m>>n;
    for(int i=1;i<=m;i++)scanf("%d",&sch[i]);
    for(int i=1;i<=n;i++)scanf("%d",&grade[i]);  
    sort(sch,sch+m);
    for(int i=1;i<=n;i++)
  {
    int l=0,r=m,sum=0;
    
    while(l<r)
    {
        int mid=l+r+1>>1;
        if(check(mid,i))l=mid;
        else r=mid-1;
        
    }
    sum=min(abs(grade[i]-sch[l]),abs(grade[i]-sch[l+1]));
    tol+=sum;
   
  }
    cout<<tol;
}
2021/12/7 14:25
加载中...