为啥还是超时啊感觉时间复杂度正常,是不是有死循环啊
查看原帖
为啥还是超时啊感觉时间复杂度正常,是不是有死循环啊
1198167
yezifenghua_coding楼主2024/8/21 22:31
#include <iostream>
#include <cmath>
#include <algorithm>
#define int long long
using namespace std;
const int M = 1e5;
int qm[M];
int m, n;

signed main()
{
    scanf("%d %d", &m, &n);
    for (int i = 0; i < m; i++)
    {
        scanf("%d", &qm[i]);
    }
    sort(qm, qm + m);
    int total = 0;
    int x;
    while (n--)
    {
        scanf("%d", &x);
        int l = 0, r = m - 1;
        while (l != r - 1)
        {
            int mid = l + r >> 1;
            if (qm[mid] >= x)
                r = mid;
            else
                l = mid + 1;
        }
        int a = abs(qm[l] - x);
        int b = abs(qm[r] - x);
        total += (a < b) ? a : b;
    }
    cout << total << endl;
    return 0;
}
2024/8/21 22:31
加载中...