Submission #1163552

#TimeUsernameProblemLanguageResultExecution timeMemory
1163552kedimestanMobile (BOI12_mobile)C++20
0 / 100
1096 ms15944 KiB
#include <iostream> #include <vector> #include <cmath> #include <algorithm> #include <iomanip> using namespace std; struct Station { long long x, y; }; int main() { ios::sync_with_stdio(false); cin.tie(nullptr); int N; long long L; cin >> N >> L; vector<Station> stations(N); for (int i = 0; i < N; i++) { cin >> stations[i].x >> stations[i].y; } // Stations are given sorted by x; otherwise, uncomment the following sort: // sort(stations.begin(), stations.end(), [](const Station &a, const Station &b) { return a.x < b.x; }); // Function to compute the distance from a highway point x to its nearest BTS auto nearestDistance = [&](double x) -> double { // Binary search for the first station with x-coordinate >= x int lo = 0, hi = N; while (lo < hi) { int mid = lo + (hi - lo) / 2; if (stations[mid].x < x) lo = mid + 1; else hi = mid; } double best = 1e18; // Check station at or after x if (lo < N) { double dx = x - stations[lo].x; double dist = sqrt(dx * dx + (double)stations[lo].y * stations[lo].y); best = min(best, dist); } // Check station immediately before x (if exists) if (lo - 1 >= 0) { double dx = x - stations[lo - 1].x; double dist = sqrt(dx * dx + (double)stations[lo - 1].y * stations[lo - 1].y); best = min(best, dist); } return best; }; // Binary search on the highway [0, L] for the maximum distance double left = 0.0, right = (double)L; double maxDist = 0.0; const double eps = 1e-9; while (right - left > eps) { double mid = (left + right) / 2.0; double dMid = nearestDistance(mid); double dMidEps = nearestDistance(mid + eps); maxDist = max(maxDist, dMid); if (dMid < dMidEps) left = mid; // move right if function is increasing else right = mid; // move left if function is decreasing } cout << fixed << setprecision(6) << maxDist << "\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...