求助
查看原帖
求助
374851
lian13817981484楼主2023/2/22 15:29
#include<cstdio>
#include<algorithm>
using namespace std;
int n,c,arr[100005],mid,l,r,ans = 0;
bool check(int x,int y,int z){
	if(z > c)return true;
	for(int i = y+1;i <= n;i++){
		if(arr[i] - arr[y] >= x){
			if(check(x,i,z+1))return true;
		}
	}
	return false;
}
int main(){
	scanf("%d %d",&n,&c);
	for(int i = 1;i <= n;i++){
		scanf("%d",&arr[i]);
	}
	sort(arr+1,arr+n+1);
	l = 0;
	r = 1000000000;
	while(l <= r){
		mid = l+r>>1;
		if(check(mid,0,1)){
			ans = mid;
			l = mid+1;
		}
		else{
			r = mid-1;
		}
	}
	printf("%d",ans);
	return 0;
}
2023/2/22 15:29
加载中...