제출 #1302811

#제출 시각아이디문제언어결과실행 시간메모리
1302811ChottuFMobile (BOI12_mobile)C++17
100 / 100
349 ms64628 KiB
#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 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...