Submission #1270202

#TimeUsernameProblemLanguageResultExecution timeMemory
1270202os_bein_lagginMobile (BOI12_mobile)C++20
50 / 100
1096 ms31712 KiB
#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 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...