#include <bits/stdc++.h>
#define int long long
using namespace std;
int n,k,a[300005],ans;
bool check(int x){
	//假设两个人之间的距离至少为x 
	//请问餐厅能坐得下k个人吗? 
	int cnt = 1;
	int last = a[1];
	for(int i=2;i<=n;i++){
		if(a[i]-last>=x){
			cnt++;
			last = a[i]; 
		}
	}
	if(cnt >= k) return 1;//代表答案x是合理的 
	else return 0;//代表答案x不合理 
}
signed main(){
    cin>>n>>k;
    for(int i=1;i<=n;i++) cin>>a[i];
    sort(a+1,a+1+n);
    int l=1,r=a[n]-a[1];
    while(l<=r){
    	int mid = (l+r)/2;//检测mid答案是否合理
		if(check(mid)==1){
			ans = mid;
			l = mid+1;
		} 
		else{
			r = mid-1;
		}
	}
	cout << ans;
    return 0;
}

0 条评论

目前还没有评论...