fork download
  1. def check(ants, anthills, max_diff):
  2. current_diff = 0
  3. min_ = max_ = ants[0]
  4. used_anthills = 1
  5.  
  6. for ant in ants[1:]:
  7. min_ = min(min_, ant)
  8. max_ = max(max_, ant)
  9. current_diff = max_ - min_
  10.  
  11. if current_diff > max_diff:
  12. used_anthills += 1
  13. min_ = max_ = ant
  14.  
  15. return used_anthills <= anthills
  16.  
  17. def min_diff(ants, anthills):
  18. left = 0
  19. right = max(ants) - min(ants)
  20.  
  21. while left < right:
  22. l = (left + right) // 2
  23. if check(ants, anthills, l):
  24. right = l
  25. else:
  26. left = l + 1
  27.  
  28. return left
  29.  
  30. N, K = map(int, input().split())
  31. lst = sorted(list(map(int, input().split())))
  32.  
  33. result = min_diff(lst, K)
  34. print(result)
Success #stdin #stdout 0.03s 9800KB
stdin
5 2
40 50 110 120 130
stdout
20