12345678910111213141516171819202122232425262728293031323334353637383940 |
- import java.io.BufferedInputStream;
- import java.util.Arrays;
- import java.util.Scanner;
- public class Main {
- private static final int XMAX = (int) 1e9;
- public static void main(String[] args) {
- Scanner scanner = new Scanner(new BufferedInputStream(System.in));
- int N = scanner.nextInt(), C = scanner.nextInt();
- scanner.nextLine();
- int[] stalls = new int[N];
- for (int i = 0; i < N; i++) {
- stalls[i] = Integer.parseInt(scanner.nextLine());
- }
- Arrays.sort(stalls);
- int beg = 0, end = stalls[N - 1] - stalls[0];
- while (1 < end - beg) {
- int mid = beg + (end - beg) / 2;
- if (isValid(stalls, N, C, mid)) {
- beg = mid;
- } else {
- end = mid;
- }
- }
- System.out.println(beg);
- scanner.close();
- }
- private static boolean isValid(int[] stalls, int N, int C, int dist) {
- int prev = -XMAX;
- for (int stall : stalls) {
- if (dist <= stall - prev) {
- if (--C == 0) break;
- prev = stall;
- }
- }
- return C == 0;
- }
- }
|