#include<bits/stdc++.h>
#include <cstdio>
using namespace std;
#define int long long
#define ld long double
#define ff first
#define ss second
#define INF -1e18
#define mp make_pair
struct point{
    ld x,y;
    friend istream& operator>>(istream& in, point& p){
        in>>p.x>>p.y;
        return in;
    }
};
int n,k; 
ld d(point a, point b){
    return sqrt((a.x - b.x)*(a.x - b.x) + (a.y - b.y)*(a.y - b.y));
}
ld f(point a, point b){
    ld res = ((b.y)*(b.y) - (a.y)*(a.y))/(2*(b.x - a.x)) + (a.x + b.x)/2;
    return res;
}
int32_t main(){
    #ifdef LOCAL_JUDGE
        freopen("input.txt", "r", stdin);
        freopen("output.txt", "w", stdout);
    #endif
    ios_base::sync_with_stdio(0);
    cin.tie(nullptr);
    cin>>n>>k;
    ld ans = INF;
    deque<point> needed;
    for(int i = 0; i < n; i++){
        point cur; cin>>cur;
        cur.y = abs(cur.y);
        if((int)needed.size() && needed.back().x == cur.x) continue;
        while((int)needed.size() > 1 && f(needed[needed.size() - 2], needed.back()) > f(needed.back(), cur)){
            needed.pop_back();
        }
        needed.push_back(cur);
    }
    while(needed.size() > 1 && f(needed[0],needed[1]) < 0) needed.pop_front();
    while(needed.size() > 1 && f(needed[needed.size()-2],needed.back())>k) needed.pop_back();
    for(int i = 0; i < (int)needed.size(); i++){
        ld x_1=0,x_2=k;
        if(i != 0){
            x_1 =f(needed[i],needed[i-1]);
        }
        if(i != needed.size() - 1){
            x_2 = f(needed[i], needed[i+1]);
        }
        if(x_1 < 0 || x_1 > k || x_2 < 0 || x_2 > k) continue;
        ans = max({ans, d(needed[i],{x_1,0}), d(needed[i],{x_2,0})});
    }
    cout<<fixed<<setprecision(6)<<ans;
}
| # | 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... |