Submission #1073861

#TimeUsernameProblemLanguageResultExecution timeMemory
1073861vjudge1Mobile (BOI12_mobile)C++17
0 / 100
1044 ms27572 KiB
#include <bits/stdc++.h> using namespace std; typedef long long ll; typedef long double ld; ld dist(ld x1, ld y1, ld x2, ld 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(); ld ans = 0.0; ld ans_start = dist(pts[0].first, pts[0].second, 0,0); for(int i=0; i<n; i++){ ans_start = min(ans_start, dist(pts[i].first,pts[i].second,0,0)); } ld ans_end = dist(pts[0].first, pts[0].second, L,0); for(int i=0; i<n; i++){ ans_end = min(ans_end, dist(pts[i].first,pts[i].second,L,0)); } ans = max(ans_start,ans_end); const ld EPS = 1e-8; auto f = [&](ld 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] ld l=max(0LL, pts[i-1].first); ld r=min(L, pts[i].first); /* for(ld xt = l; xt <= r; xt+=0.5){ cout << "xt: " << xt << ' ' << f(xt, i) << endl; } */ while(r-l > EPS){ ld mid1 = l+(r-l)/3; ld 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 timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...