This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
double dist(double x1, double y1, double x2, double y2){
return (x1-x2)*(x1-x2)+(y1-y2)*(y1-y2);
}
int main(){
ios_base::sync_with_stdio(0); cin.tie(0);
int n;
ll L;
cin >> n >> L;
vector <pair<ll,ll>> pts;
for(int i=0; i<n; i++){
ll x, y;
cin >> x >> y;
if(!pts.empty() && x == pts.back().first){
pts.back().second = min(pts.back().second, abs(y));
}
else{
pts.push_back({x,abs(y)});
}
}
n = pts.size();
double ans = max(
dist(pts[0].first,pts[0].second,0,0),
dist(pts[n-1].first, pts[n-1].second, L, 0));
const double EPS = 1e-7;
auto f = [&](double x, int i){
return max(
dist(x,0,pts[i-1].first,pts[i-1].second),
dist(x,0,pts[i].first,pts[i].second));
};
for(int i=1; i<n; i++){
// ternary search x* between pts[i-1], pts[i]
double l=max(0LL, pts[i-1].first);
double r=min(L, pts[i].first);
/*
for(double xt = l; xt <= r; xt+=0.5){
cout << "xt: " << xt << ' ' << f(xt, i) << endl;
}
*/
while(r-l > EPS){
double mid1 = l+(r-l)/3;
double mid2 = l+2*(r-l)/3;
if(f(mid2,i)-f(mid1,i) >= 0) r = mid2;
else l = mid1;
}
ans = max(ans, f(l,i));
}
ans = sqrt(ans);
cout << fixed << setprecision(6) << 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... |