//P1316 n<1e5个瓶盖 选K个,使得K个瓶盖两两之间最短距离尽量大
//排序+二分答案,注意上下界
#include<bits/stdc++.h>
#define ll long long
using namespace std;
int a[100005];
bool check(int m,int k,int n){
int now=0;int la=a[0];
for(int i=1;i<=n;i++){
if(a[i]-la>=m){
now++;
la=a[i];
}
}
if(now>=k)return true;
return false;
}
int main(){
int n,k;
cin>>n>>k;
if(k<=1){
cout<<"0"<<endl;
return 0;
}
for(int i=1;i<=n;i++)cin>>a[i];
a[0]=-1000000000;
sort(1+a,a+1+n);
int l=1,r=1000000000,ans=0;
while(l<=r){
int m=l+r>>1;
if(check(m,k,n)){//满足条件的最大距离
ans=m;
l=m+1;
}else{
r=m-1;
}
}
cout<<ans<<endl;
system("pause");
}