def check(ants, anthills, max_diff):
current_diff = 0
min_ = max_ = ants[0]
used_anthills = 1
for ant in ants[1:]:
min_ = min(min_, ant)
max_ = max(max_, ant)
current_diff = max_ - min_
if current_diff > max_diff:
used_anthills += 1
min_ = max_ = ant
return used_anthills <= anthills
def min_diff(ants, anthills):
left = 0
right = max(ants) - min(ants)
while left < right:
l = (left + right) // 2
if check(ants, anthills, l):
right = l
else:
left = l + 1
return left
N, K = map(int, input().split())
lst = sorted(list(map(int, input().split())))
result = min_diff(lst, K)
print(result)
ZGVmIGNoZWNrKGFudHMsIGFudGhpbGxzLCBtYXhfZGlmZik6CiAgY3VycmVudF9kaWZmID0gMAogIG1pbl8gPSBtYXhfID0gYW50c1swXQogIHVzZWRfYW50aGlsbHMgPSAxCiAgCiAgZm9yIGFudCBpbiBhbnRzWzE6XToKICAgIG1pbl8gPSBtaW4obWluXywgYW50KQogICAgbWF4XyA9IG1heChtYXhfLCBhbnQpCiAgICBjdXJyZW50X2RpZmYgPSBtYXhfIC0gbWluXwogICAgCiAgICBpZiBjdXJyZW50X2RpZmYgPiBtYXhfZGlmZjoKICAgICAgdXNlZF9hbnRoaWxscyArPSAxCiAgICAgIG1pbl8gPSBtYXhfID0gYW50CiAgICAgIAogIHJldHVybiB1c2VkX2FudGhpbGxzIDw9IGFudGhpbGxzCgpkZWYgbWluX2RpZmYoYW50cywgYW50aGlsbHMpOgogIGxlZnQgPSAwCiAgcmlnaHQgPSBtYXgoYW50cykgLSBtaW4oYW50cykKICAgIAogIHdoaWxlIGxlZnQgPCByaWdodDoKICAgIGwgPSAobGVmdCArIHJpZ2h0KSAvLyAyCiAgICBpZiBjaGVjayhhbnRzLCBhbnRoaWxscywgbCk6CiAgICAgIHJpZ2h0ID0gbAogICAgZWxzZToKICAgICAgbGVmdCA9IGwgKyAxCgogIHJldHVybiBsZWZ0CgpOLCBLID0gbWFwKGludCwgaW5wdXQoKS5zcGxpdCgpKQpsc3QgPSBzb3J0ZWQobGlzdChtYXAoaW50LCBpbnB1dCgpLnNwbGl0KCkpKSkKCnJlc3VsdCA9IG1pbl9kaWZmKGxzdCwgSykKcHJpbnQocmVzdWx0KQ==