Submission #1241198

#TimeUsernameProblemLanguageResultExecution timeMemory
1241198newbie_tMobile (BOI12_mobile)C++20
100 / 100
444 ms18508 KiB
#include <bits/stdc++.h>
using namespace std;
vector<pair<double, double>> pts;
int n;
double L;

bool works(double d){
    double currDistCovered = 0.0;
    for(int i = 0; i < n; i++){
        double dist = sqrt(d*d - pts[i].second*pts[i].second);
        double start = pts[i].first - dist; 
        double end = pts[i].first + dist;

        if(start <= currDistCovered){ 
            currDistCovered = max(currDistCovered, end);
        }
    }
    return currDistCovered >= L;
}

int main() {
    ios_base::sync_with_stdio(false);
    cin.tie(nullptr);
    cin >> n >> L;
    pts.resize(n);
    for(int i = 0; i < n; i++) cin >> pts[i].first >> pts[i].second;

    double good = 1.5e9;
    double bad = -1.0;
    
    for(int i = 0; i < 50; i++){
        double mid = bad + (good - bad)/2;
        if(works(mid)){
            good = mid;
        } else {
            bad = mid;
        }
    }
    cout << fixed << setprecision(12) << good;
}
#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...