#include <bits/stdc++.h>
#define f first
#define ss second
using namespace std;
bool cmp(pair<int,int> a, pair<int,int> b){
    if(a.ss == b.ss) return a.f<b.f;
    return a.ss<b.ss;
}
bool ok(double m, vector<pair<int,int>> a, int x){
    int n = a.size();
    vector<pair<double,double>> b;
    for(int i=0; i < n; i ++){
        double le = a[i].f-sqrt(m*m-a[i].ss*a[i].ss), re = a[i].f+sqrt(m*m-a[i].ss*a[i].ss);
        if(abs(a[i].ss) > m) return 0;
        b.push_back({le,re});
    }
    sort(b.begin(),b.end());
    if(b[0].f > 0 || b[n-1].ss<x) return 0;
    double cr = b[0].ss;
    for(int i=1; i < n; i ++){
        if(b[i].f<0 && b[i].ss <0) continue;
        if(b[i].f>0 && cr >=0 && b[i].f > cr) return 0;
        cr = max(cr,b[i].ss);
        if(b[i].f>=x && b[i].ss>=x) break;
    }
    // for(int i=0; i < n; i ++){
    //     cout << b[i].f <<"-" << b[i].ss <<" ";
    // }
    return 1;
}
signed main(){
    cin.tie(0)->sync_with_stdio(0);
    int n,x; cin >> n >> x;
    vector<pair<int,int>> a(n);
    for(auto &i : a) cin >> i.first >> i.second;
    
    double l = 0, r = INT_MAX;
    for(int i=0; i < 100; i ++){
        double m = (l + r) / 2;
        if(ok(m,a,x)) r = m;
        else l=m;
    }
    // ok(5.099020,a,x);
    cout << fixed << setprecision(6) << r;
}
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict | Execution time | Memory | Grader output | 
|---|
| Fetching results... |