玄关求条
查看原帖
玄关求条
1792536
lihexuan2012楼主2025/8/30 14:24
#include<bits/stdc++.h>
using namespace std;
int a[50010],r,n,m;
bool dfs(int d,int y)
{
    int x = 0;
    bool f = 0;
    for(int i=0;i<=n;i++){
        x = i+1;
        while(a[x] - a[i] < d && x <= n){
            if(y == 0) return 0;
            --y;
            ++x;
        }
        if(a[x] - a[i] < d) return 0;
        // cout<<i<<" "<<x<<"\n";
        if(a[x] - a[i] == d) f = 1;
        i = x-1;
    }
    return f;
}
int main()
{
    cin>>r>>n>>m;
    a[0]=0;
    a[n+1]=r;
    for(int i=1;i<=n;i++) cin>>a[i];
    int l=0;
    while(l<=r)
    {
        int i=(l+r)>>1;
        if(dfs(i,m)) l=i+1;
        else r=i-1;
        // cout<<"\n";
    }
    // cout<<dfs(4, m);
    cout<<l-1;
}
2025/8/30 14:24
加载中...