#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(needed.size() && needed.back().x == cur.x) continue;
while(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 < needed.size(); i++){
if(i != 0){
ld x_ = max((long double)0,f(needed[i-1],needed[i]));
ans = max(ans, d({x_,0}, needed[i]));
}
if(i != needed.size() - 1){
ld x_ = min((long double)k, f(needed[i], needed[i+1]));
ans = max(ans, d({x_,0}, needed[i]));
}
}
cout<<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... |