Main.java 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. import java.io.BufferedInputStream;
  2. import java.util.Arrays;
  3. import java.util.Scanner;
  4. public class Main {
  5. private static final int XMAX = (int) 1e9;
  6. public static void main(String[] args) {
  7. Scanner scanner = new Scanner(new BufferedInputStream(System.in));
  8. int N = scanner.nextInt(), C = scanner.nextInt();
  9. scanner.nextLine();
  10. int[] stalls = new int[N];
  11. for (int i = 0; i < N; i++) {
  12. stalls[i] = Integer.parseInt(scanner.nextLine());
  13. }
  14. Arrays.sort(stalls);
  15. int beg = 0, end = stalls[N - 1] - stalls[0];
  16. while (1 < end - beg) {
  17. int mid = beg + (end - beg) / 2;
  18. if (isValid(stalls, N, C, mid)) {
  19. beg = mid;
  20. } else {
  21. end = mid;
  22. }
  23. }
  24. System.out.println(beg);
  25. scanner.close();
  26. }
  27. private static boolean isValid(int[] stalls, int N, int C, int dist) {
  28. int prev = -XMAX;
  29. for (int stall : stalls) {
  30. if (dist <= stall - prev) {
  31. if (--C == 0) break;
  32. prev = stall;
  33. }
  34. }
  35. return C == 0;
  36. }
  37. }