#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(),cmp);
if(b[0].f > 0 || b[n-1].ss<x) return 0;
for(int i=1; i < n; i ++){
if(b[i].f<0 && b[i].ss <0) continue;
if(b[i].f>0 && b[i-1].ss >=0 && b[i].f > b[i-1].ss) return 0;
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... |