import java.util.*;
public class Main {
public static void main
(String[] args
) { int[] chairs = {1, 2, 4, 8, 9};
int c = 3;
int result = largestMinDistance(chairs, c);
System.
out.
println(result
); // Output: 3 }
public static int largestMinDistance(int[] chairs, int c) {
int n = chairs.length;
int left = 0, right = chairs[n - 1] - chairs[0];
int result = 0;
while (left <= right) {
int mid = left + (right - left) / 2;
if (isValid(chairs, c, mid)) {
result = mid;
left = mid + 1;
} else {
right = mid - 1;
}
}
return result;
}
public static boolean isValid(int[] chairs, int c, int minDistance) {
int count = 1;
int lastPosition = chairs[0];
for (int i = 1; i < chairs.length; i++) {
if (chairs[i] - lastPosition >= minDistance) {
count++;
lastPosition = chairs[i];
}
}
return count >= c;
}
}
aW1wb3J0IGphdmEudXRpbC4qOwpwdWJsaWMgY2xhc3MgTWFpbiB7CiAgICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB7CiAgICAgICAgaW50W10gY2hhaXJzID0gezEsIDIsIDQsIDgsIDl9OwogICAgICAgIGludCBjID0gMzsKICAgICAgICBpbnQgcmVzdWx0ID0gbGFyZ2VzdE1pbkRpc3RhbmNlKGNoYWlycywgYyk7CiAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKHJlc3VsdCk7IC8vIE91dHB1dDogMwogICAgfQoKICAgIHB1YmxpYyBzdGF0aWMgaW50IGxhcmdlc3RNaW5EaXN0YW5jZShpbnRbXSBjaGFpcnMsIGludCBjKSB7CiAgICAgICAgaW50IG4gPSBjaGFpcnMubGVuZ3RoOwogICAgICAgIEFycmF5cy5zb3J0KGNoYWlycyk7CiAgICAgICAgaW50IGxlZnQgPSAwLCByaWdodCA9IGNoYWlyc1tuIC0gMV0gLSBjaGFpcnNbMF07CiAgICAgICAgaW50IHJlc3VsdCA9IDA7CgogICAgICAgIHdoaWxlIChsZWZ0IDw9IHJpZ2h0KSB7CiAgICAgICAgICAgIGludCBtaWQgPSBsZWZ0ICsgKHJpZ2h0IC0gbGVmdCkgLyAyOwogICAgICAgICAgICBpZiAoaXNWYWxpZChjaGFpcnMsIGMsIG1pZCkpIHsKICAgICAgICAgICAgICAgIHJlc3VsdCA9IG1pZDsKICAgICAgICAgICAgICAgIGxlZnQgPSBtaWQgKyAxOwogICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgcmlnaHQgPSBtaWQgLSAxOwogICAgICAgICAgICB9CiAgICAgICAgfQoKICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgfQoKICAgIHB1YmxpYyBzdGF0aWMgYm9vbGVhbiBpc1ZhbGlkKGludFtdIGNoYWlycywgaW50IGMsIGludCBtaW5EaXN0YW5jZSkgewogICAgICAgIGludCBjb3VudCA9IDE7CiAgICAgICAgaW50IGxhc3RQb3NpdGlvbiA9IGNoYWlyc1swXTsKCiAgICAgICAgZm9yIChpbnQgaSA9IDE7IGkgPCBjaGFpcnMubGVuZ3RoOyBpKyspIHsKICAgICAgICAgICAgaWYgKGNoYWlyc1tpXSAtIGxhc3RQb3NpdGlvbiA+PSBtaW5EaXN0YW5jZSkgewogICAgICAgICAgICAgICAgY291bnQrKzsKICAgICAgICAgICAgICAgIGxhc3RQb3NpdGlvbiA9IGNoYWlyc1tpXTsKICAgICAgICAgICAgfQogICAgICAgIH0KCiAgICAgICAgcmV0dXJuIGNvdW50ID49IGM7CiAgICB9Cn0K