满江红
查看原帖
满江红
1125106
11514zbs楼主2024/7/28 13:09
#include <cstdio>
#include <algorithm>

using namespace std;

long long a[1000005], b[1000005], n, m, suma, sumb, j, mi;

int main()
{
    scanf("%lld %lld", &n, &m);
    for (long long i = 0; i < n; i++)
    {
        scanf("%lld", &a[i]);
        suma += a[i];
    }
    for (long long i = 0; i < m; i++)
    {
        scanf("%lld", &b[i]);
        sumb += b[i];
    }
    sort(a, a + n);
    sort(b, b + m);
    for (long long i = 0; i < m; i++)
    {
        for (; a[j] < b[i] && j < n; j++) {}
        if (abs(a[j] - b[i]) < abs(b[i] - a[j - 1]))
        {
            mi += abs(a[j] - b[i]);
        }
        else
        {
            mi += abs(b[i] - a[j - 1]);
        }
        j++;
    }
    printf("%lld\n", mi);
    return 0;
}

样例过了,没有用二分但最慢的点也只跑了 23ms23ms 。

2024/7/28 13:09
加载中...