70分求助
查看原帖
70分求助
1103488
abc_abc_abc楼主2024/4/16 21:55
#include <bits/stdc++.h>
using namespace std;
long long l;
long long n;
long long m;
long long arr[100000010];
long long L, R, mid;
long long ans, cnt;
bool cmp(int x, int y)
{
    return x > y;
}
bool check(long long mid)
{
    ans = 1;
    cnt = 1;
    for (int i = 2; i <= n; i++)
    {
        if (arr[cnt] - arr[i] < mid)
        {
            ans++;
        }
        else
        {
            cnt = i;
        }
    }
    if (ans <= m) return true;
    return false;
}
int main()
{
    cin >> l >> n >> m;
    for (int i = 1; i <= n; i++) cin >> arr[i];
    if (n != 0 || m != 0)
    {
        L = 1;
        R = arr[n] - arr[1];
        sort(arr + 1, arr + n + 1, cmp);
        while (L <= R)
        {
            mid = (L + R) / 2;
            if (check(mid)) L = mid + 1;
            else R = mid - 1;
        }
        cout << R;
        return 0;
    }
    else
    {
        cout << l;
        return 0;
    }
    return 0;
}

大佬们帮我小鞋生看看

2024/4/16 21:55
加载中...