|
@@ -0,0 +1,40 @@
|
|
|
+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;
|
|
|
+ }
|
|
|
+}
|