Submission #1255733

#TimeUsernameProblemLanguageResultExecution timeMemory
1255733NipphitchMobile (BOI12_mobile)C++20
0 / 100
347 ms15944 KiB
#include <bits/stdc++.h>
using namespace std;

const double EPS = 1e-9;

int main() {
    ios::sync_with_stdio(false);
    cin.tie(nullptr);

    int N;
    double L;
    cin >> N >> L;

    vector<double> x(N), y(N);
    for (int i = 0; i < N; i++) {
        cin >> x[i] >> y[i];
    }

    double lo = 0, hi = 0;
    // hi bound: farthest possible distance to the farthest station
    for (int i = 0; i < N; i++) {
        hi = max(hi, hypot(max(x[i], L) - min(x[i], 0.0), y[i]));
    }

    for (int it = 0; it < 70; it++) { // enough for double precision
        double mid = (lo + hi) / 2.0;

        double mxlo = 0.0, mnhi = L;
        bool ok = true;
        for (int i = 0; i < N; i++) {
            if (fabs(y[i]) > mid + EPS) { ok = false; break; }
            double dx = sqrt(max(0.0, mid * mid - y[i] * y[i]));
            mxlo = max(mxlo, x[i] - dx);
            mnhi = min(mnhi, x[i] + dx);
        }
        if (ok && mnhi + EPS >= mxlo && mnhi >= 0 - EPS && mxlo <= L + EPS) {
            hi = mid;
        } else {
            lo = mid;
        }
    }

    cout << fixed << setprecision(6) << hi << "\n";
    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...