#include <bits/stdc++.h>
using namespace std;
struct Interval {
double l, r;
bool operator<(const Interval &other) const {
if (fabs(l - other.l) < 1e-12) return r < other.r;
return l < other.l;
}
};
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
int N;
long long L;
cin >> N >> L;
vector<pair<long long, long long> > stations(N);
for (int i = 0; i < N; i++) {
cin >> stations[i].first >> stations[i].second;
}
auto canCover = [&](double R) -> bool {
vector<Interval> intervals;
intervals.reserve(N);
for (int i = 0; i < N; i++) {
long long x = stations[i].first;
long long y = stations[i].second;
if (1.0 * y * y > R * R) continue; // cannot reach highway
double dx = sqrt(R * R - 1.0 * y * y);
double left = max(0.0, (double)x - dx);
double right = min((double)L, (double)x + dx);
if (left <= right) intervals.push_back(Interval{left, right});
}
if (intervals.empty()) return false;
sort(intervals.begin(), intervals.end());
double covered = 0.0;
for (size_t i = 0; i < intervals.size(); i++) {
if (intervals[i].l > covered + 1e-9) return false; // gap
covered = max(covered, intervals[i].r);
if (covered >= L) return true;
}
return false;
};
double lo = 0.0, hi = 2e9; // upper bound big enough
for (int it = 0; it < 60; it++) {
double mid = (lo + hi) / 2.0;
if (canCover(mid)) hi = mid;
else lo = mid;
}
cout << fixed << setprecision(6) << hi << "\n";
return 0;
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |