Submission #1211040

#TimeUsernameProblemLanguageResultExecution timeMemory
1211040sosukeMobile (BOI12_mobile)Java
In queue
0 ms0 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);
    }
}