#include <bits/stdc++.h>
using namespace std;
long double intersect(pair<long double, long double> a, pair<long double, long double> b){
return (((b.first*b.first) + (b.second*b.second)) - ((a.first*a.first)+(a.second*a.second)))/(2.0*(b.first-a.first));
}
long double dist(pair<long double, long double> p, long double x){
long double dx = p.first - x;
return (dx*dx) + (p.second*p.second);
}
signed main(){
ios::sync_with_stdio(0);
cin.tie(0);
int n;
long double l;
cin >> n >> l;
vector<pair<long double,long double>> arr(n);
for (int i = 0; i<n; i++){
cin >> arr[i].first >> arr[i].second;
arr[i].second = abs(arr[i].second);
}
sort(arr.begin(), arr.end());
vector<pair<long double, long double>> s;
for (int i = 0; i<n; i++){
if (!s.empty() && abs(s.back().first - arr[i].first) < 1e-9){
continue;
}
while (s.size() >= 2){
//do stuff
long double cr = intersect(s.back(), arr[i]);
long double prv = intersect(s[s.size()-2], s.back());
if (cr <= prv) s.pop_back();
else break;
}
s.push_back(arr[i]);
}
long double ans = 0;
for (int i = 0; i<s.size(); i++){
long double lft,rgt;
if (i == 0) lft = -1e18;
else lft = intersect(s[i-1], s[i]);
if (i == s.size()-1) rgt = 1e18;
else rgt = intersect(s[i], s[i+1]);
long double st = max(lft, (long double)0.0);
long double nd = min(rgt, l);
if (st <= nd){
ans = max(ans, dist(s[i], st));
ans = max(ans, dist(s[i], nd));
}
}
cout << fixed << setprecision(10) << sqrt(ans);
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... |