# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
1211040 | sosuke | Mobile (BOI12_mobile) | Java | 0 ms | 0 KiB |
import java.util.*;
import java.io.*;
public class mobile {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine());
int n = Integer.parseInt(st.nextToken());
int len = Integer.parseInt(st.nextToken());
long[][] p = new long[n][2];
for (int i = 0; i < n; i++) {
st = new StringTokenizer(br.readLine());
p[i][0] = Long.parseLong(st.nextToken()); // x
p[i][1] = Long.parseLong(st.nextToken()); // y
}
double l = 1.0;
double r = 1.5e9;
while (r - l > 1e-3 + 1e-9) { // Adding small buffer for floating point precision issues
double mid = (l + r) / 2;
double curr = 0;
for (int i = 0; i < n; i++) {
long x = p[i][0];
long y = p[i][1];
double delta = Math.sqrt(mid * mid - y * y);
double a = x - delta;
double b = x + delta;
if (a <= curr) {
curr = Math.max(curr, b);
}
}
if (curr >= len) {
r = mid;
} else {
l = mid;
}
}
System.out.printf("%.4f\n", l);
}
}