Submission #1302792

#TimeUsernameProblemLanguageResultExecution timeMemory
1302792ChottuFMobile (BOI12_mobile)C++17
0 / 100
716 ms64724 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; } sort(arr.begin(), arr.end()); vector<pair<long double, long double>> s; for (int i = 0; i<n; i++){ 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; ans = max(ans, dist(s[0],0)); for (int i = 0; i<s.size()-1; i++){ long double x = intersect(s[i], s[i+1]); if (x >= 0 && x <= l){ ans = max(ans, dist(s[i], x)); } } ans = max(ans, dist(s.back(), l)); 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...