#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;

int main() {
	ios::sync_with_stdio(false);
	cin.tie(NULL);

	int n, c;
	cin >> n >> c;
	
	vector<int> v(n);
	for (int i = 0; i < n; ++i)
		cin >> v[i];
	sort(v.begin(), v.end());

	int maxDist = 0;
	// start가 1인 이유: 최소거리
	int start = 1, end = v[n - 1] - v[0];
	while (start <= end) {
		int mid = (start + end) / 2;

		int curSet = 1;
		int prev = v[0];
		for (int i = 0; i < n; ++i) {
			// 간격이 mid보다 클 때 공유기 설치
			if (v[i] - prev >= mid) {
				++curSet;
				prev = v[i];
			}
		}

		// 만약 공유기를 c보다 더 많이 설치했을 경우 간격을 넓힌다
		if (curSet >= c) {
			maxDist = max(maxDist, mid);
			start = mid + 1;
		}
		else // c보다 적게 설치했을 경우 간격을 좁힌다
			end = mid - 1;
	}

	cout << maxDist;

	return 0;
}