Submission #553412

#TimeUsernameProblemLanguageResultExecution timeMemory
553412Hona_NguyenMobile (BOI12_mobile)C++14
0 / 100
1101 ms48204 KiB
#include<bits/stdc++.h> #define prob "mobile" #define x first #define y second using namespace std; const int maxn = 1e6; const int MOD = 1e9 + 7; const double eps = 1e-9; int n,L; pair<double,double> p[maxn+5]; int main(){ // freopen(prob".inp","r",stdin); // freopen(prob".out","w",stdout); ios_base::sync_with_stdio(0); cin.tie(0);cout.tie(0); cin >> n >> L; for(int i=1;i<=n;i++) cin >> p[i].x >> p[i].y; auto check = [&](double val) -> int{ vector<pair<double,double>> G; for(int i=1;i<=n;i++){ if(val < p[i].y) return 0; double tmp = sqrt(val*val-p[i].y*p[i].y); double xL = p[i].x - tmp; double xR = p[i].x + tmp; G.push_back(make_pair(xL,xR)); } sort(G.begin(),G.end(), [&](const pair<double,double> A, const pair<double,double> B){ if(A.first == B.first) return A.second < B.second; return A.first < B.first; }); double curx = 0; for(int i=0;i<n;i++){ if(G[i].x <= curx){ curx = max(curx, G[i].y); } } return (curx >= (double)(L)); }; double low = 1, high = (double)(2e9), res = 0; for(int i=1;i<=100;i++){ if(high < low) break; double mid = (low + high) / (double)(2); if(check(mid)){ res = mid; high = mid; } else{ low = mid; } } cout << fixed << setprecision(6); cout << res; }
#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...