求助!!!开了longlong还是没过最后一个测试点
查看原帖
求助!!!开了longlong还是没过最后一个测试点
1115019
Mrlaolu楼主2023/9/30 21:15
//
// Created by COLORFUL on 2023/9/30.
//
#include "bits/stdc++.h"
#define int long long

using namespace std;
int a[100020000] = {0},b[100020000] = {0};


signed main()
{
    int m,n,sum = 0;
    cin >> m >> n;

    for (int i = 1; i <= m; ++i)
    {
        cin >> a[i];
    }

    sort(a+1,a+m+1);

    for (int i = 1; i <= n; ++i)
    {
        cin >> b[i];
        int l = 1,r = m,mid;
        while(l < r)
        {
            mid = (l + r) / 2;
            if(a[mid] >= b[i]){r = mid;}
            else{l = mid + 1;}
        }
        if(l == 1 && l == n){sum += b[i]- a[l];}
        else if(l == n){sum += min({abs(b[i]- a[l - 1]),abs(b[i]- a[l])});}
        else if(l == 1){sum += min({abs(b[i]- a[l]),abs(b[i]- a[l + 1])});}
        else{sum += min({abs(b[i]- a[l - 1]),abs(b[i]- a[l]),abs(b[i]- a[l + 1])});}

    }

    cout << sum << endl;
    return 0;


}
2023/9/30 21:15
加载中...