#include <bits/stdc++.h>
using namespace std;
using ld = long double;
using ll = long long;
struct point{
ll x, y;
};
vector<point> p;
ld solve(int i, int j){
ll x1 = p[i].x, y1 = p[i].y;
ll x2 = p[j].x, y2 = p[j].y;
return (ld) (x2 * x2 + y2 * y2 - x1 * x1 - y1 * y1) / ((x2 - x1) * 2.0);
}
int main(){
cin.tie(0)->sync_with_stdio(0);
int n; ll l; cin >> n >> l;
for(int i=1; i<=n; i++){
ll x, y; cin >> x >> y;
if(!p.empty() && x == p.back().x){
p.back().y = min(p.back().y, abs(y));
} else p.push_back({x, abs(y)});
}
stack<int> q;
ld last_x = 0;
for(int i=0; i<p.size(); i++){
while(!q.empty() && solve(q.top(), i) < last_x){
last_x = solve(q.top(), i);
q.pop();
}
q.push(i);
}
ld ans = 0;
int last_i = 0;
if(!q.empty()){
last_i = q.top();
q.pop();
}
while(!q.empty()){
ld cur_x = solve(q.top(), last_i);
ans = max(ans, (ld) ((p[last_i].x - cur_x) * (p[last_i].x - cur_x) + p[last_i].y * p[last_i].y));
last_i = q.top();
q.pop();
}
ld dist_1 = (ld) (p[1].x * p[1].x + p[1].y * p[1].y), dist_l = (ld) ((l - p[1].x) * (l - p[1].x) + p[1].y * p[1].y);
for(int i=0; i<p.size(); i++){
dist_1 = min(dist_1, (ld) (p[i].x * p[i].x + p[i].y * p[i].y));
dist_l = min(dist_l, (ld) ((l - p[i].x) * (l - p[i].x) + p[i].y * p[i].y));
}
ans = max({ans, dist_1, dist_l});
cout << fixed << setprecision(6) << sqrt(ans) << "\n";
return 0;
}
# | 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... |