#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... |