求调并说明
查看原帖
求调并说明
1028442
linruizhe111楼主2024/3/10 00:13
#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
using namespace std;
long long n,m,a[100010],l=1e9+10,r,mid;
bool check(int x){
    int cnt=1,now=a[1];
    for(int i=2;i<=n;i++){
        if(a[i]-now>x){
            cnt++;now=a[i];
        }
        if(cnt>=m)return true;
    }
    return false;
}
int main()
{
    cin>>n>>m;
    for(int i=1;i<=n;i++)
    {
        cin>>a[i];
        r=max(r,a[i]);
        l=min(l,a[i]);
    }
    sort(a+1,a+n+1);
    while(l<=r){
        mid=l+r>>1;
        if(check(mid))r=mid-1;
        else l=mid+1;
    }
    cout << l-1;
 	return 0;//orz
}

2024/3/10 00:13
加载中...