Submission #1255732

#TimeUsernameProblemLanguageResultExecution timeMemory
1255732NipphitchMobile (BOI12_mobile)C++20
0 / 100
270 ms15944 KiB
#include <bits/stdc++.h>
using namespace std;
#define int long long

const int T = 100000; // scale factor
const int INF = 4e14; // upper bound for scaled distance

int n;
long long L;
vector<long long> x, y;

bool can(int mid) {
    // mid is the radius (scaled by T)
    long double mnhi = 1e18, mxlo = -1e18;
    for (int i = 0; i < n; i++) {
        if (y[i] > mid) return false; // can't reach vertically
        long double dx = sqrtl((long double)mid * mid - (long double)y[i] * y[i]);
        mxlo = max(mxlo, (long double)x[i] - dx);
        mnhi = min(mnhi, (long double)x[i] + dx);
    }
    return (mnhi >= mxlo && mnhi >= 0 && mxlo <= L);
}

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

    cin >> n >> L;
    L *= T;
    x.resize(n);
    y.resize(n);
    for (int i = 0; i < n; i++) {
        cin >> x[i] >> y[i];
        x[i] *= T;
        y[i] *= T;
    }

    int lo = 0, hi = INF;
    while (lo < hi) {
        int mid = (lo + hi) / 2;
        if (can(mid)) hi = mid;
        else lo = mid + 1;
    }

    cout << lo / T << ".";
    int rem = lo % T;
    string s = to_string(rem);
    while ((int)s.size() < 5) s = '0' + s;
    cout << s << "\n";
}
#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...