Submission #1019417

#TimeUsernameProblemLanguageResultExecution timeMemory
1019417ThunnusMobile (BOI12_mobile)C++17
100 / 100
370 ms35412 KiB
#include<bits/stdc++.h>
using namespace std;
using i64 = long long;
#define int i64
#define vi vector<int>
#define vvi vector<vi>
#define vb vector<bool>
#define pii pair<int, int>
#define fi first
#define se second
#define sz(x) (int)(x).size()

const double ERROR = 1e-3;
int n, l;

inline bool check(double r, vector<pii> &stations){
    double prev_end = 0;
    for(int i = 0; i < n; i++){
        double a = sqrt(r * r - stations[i].se * stations[i].se);
        double left_endpoint = stations[i].fi - a, right_endpoint = stations[i].fi + a;
        if(left_endpoint <= prev_end)
            prev_end = max(right_endpoint, prev_end);
    }
    return prev_end >= l;
}

signed main(){
    ios_base::sync_with_stdio(false); cin.tie(0);
    cin >> n >> l;
    vector<pii> stations(n);
    for(pii &p : stations)
        cin >> p.fi >> p.se;

    double lo = 0, hi = 1.5e9, mid;
    while(hi - lo > ERROR){
        mid = (hi + lo) / 2;
        if(check(mid, stations))
            hi = mid;
        else
            lo = mid;
    }
    cout << fixed << setprecision(9) << hi;
    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...