/*二分搜索*/
#include <iostream>
#include <stdio.h>
#include <vector>
#include <algorithm>
using namespace std;
const int maxn = 1e5;
int n, m;
int INF = 1e7;
int s = 0, e = INF;
int num[maxn];
bool yes(int d)
{
int last = 0;
int now;
for(int i = 1; i < m; i++){
now = last + 1;
while(now < n && num[now] - num[last] < d) //计数距离小于d的数目
now++;
if(now == n)
return 0;
last = now;
}
return 1;
}
int main()
{
scanf("%d%d", &n, &m);
for(int i = 0; i < n; i++){
scanf("%d", &num[i]);
}
sort(num, num + n); //将牛舍的位置从小到大排序
while(e - s > 1){
int mid = (s + e) / 2;
if(yes(mid))
s = mid; //更新区间端点
else
e = mid;
}
printf("%d\n", s);
return 0;
}