Submission #1165867

#TimeUsernameProblemLanguageResultExecution timeMemory
1165867hikari1234Mobile (BOI12_mobile)C++20
100 / 100
346 ms16096 KiB
#include <bits/stdc++.h>
using namespace std;
#define int long long
int n;
double L;
pair<double,double> a[1000005];
bool check(double mid){
    double l=0;
    for(int i=0; i<n; i++){
        double x=mid*mid-a[i].second*a[i].second;
        if((l-a[i].first)*(l-a[i].first)+a[i].second*a[i].second>mid*mid){
            continue;
        }
        double dx=sqrt(x);
        if(a[i].first-dx<=l){
            l=a[i].first+dx;
        }
    }
    return l>=L;
}
signed main() {
    ios::sync_with_stdio(0);
    cin.tie(NULL);
    cout.tie(NULL);
    cin>>n>>L;
    for(int i=0; i<n; i++){
        cin>>a[i].first>>a[i].second;
    }
    double lo=0, hi=1.5*1e9;
    while(lo+1e-3<hi){
        double mid=(lo+hi)/2;
        if(check(mid)) hi=mid;
        else lo=mid;
    }
    cout<<fixed<<setprecision(18)<<lo<<endl;
}
#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...