Submission #1255524

#TimeUsernameProblemLanguageResultExecution timeMemory
1255524chr34Mobile (BOI12_mobile)C++20
0 / 100
1096 ms24292 KiB
#include <bits/stdc++.h>
using namespace std;

struct Station {
    double x, y;
};

double dist(double p, const Station &s) {
    return hypot(p - s.x, s.y);
}

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

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

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

    vector<double> candidates;
    candidates.push_back(0.0);
    candidates.push_back(L);

    // Check between each consecutive station
    for (int i = 0; i + 1 < N; i++) {
        double x1 = st[i].x, y1 = st[i].y;
        double x2 = st[i+1].x, y2 = st[i+1].y;
        if (x1 == x2) continue; // avoid division by zero
        double p = (x2*x2 + y2*y2 - x1*x1 - y1*y1) / (2.0 * (x2 - x1));
        if (p >= 0.0 && p <= L) {
            candidates.push_back(p);
        }
    }

    double ans = 0.0;
    for (double p : candidates) {
        double best = numeric_limits<double>::infinity();
        // find nearest station
        for (int i = 0; i < N; i++) {
            best = min(best, dist(p, st[i]));
        }
        ans = max(ans, best);
    }

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