二分答案
#include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std;
int ans[100010];
int a,b,l=100000000,r,n;
bool judge(int x)//
{
int now=ans[1],tot=1;
for(int i=2;i<=a;i++)
if(ans[i]-now>=x){
tot++;
now=ans[i];
}
return tot>=b;
}
int main()
{
scanf("%d%d",&a,&b);
for(int i=1;i<=a;i++){
scanf("%d",&ans[i]);
}
sort(ans+1,ans+a+1);
for(int i=2;i<=a;i++){
l=min(l,ans[i]-ans[i-1]);
}
r=ans[a]-ans[1];
while(l<=r){
int mid=l+(r-l)/2;
if(judge(mid)){
n=mid;
l=mid+1;
}
else
r=mid-1;
}
printf("%d",n);
return 0;
}