Submission #477083

#TimeUsernameProblemLanguageResultExecution timeMemory
477083qwerty1234Mobile (BOI12_mobile)C++17
0 / 100
1091 ms49972 KiB
#include <bits/stdc++.h> #define ll long long using namespace std; bool check(double maxDist, vector<pair<double, double>> &transceivers, ll N, ll L) { vector<pair<double, double>> bounds; for (int i = 0; i < N; i++) { double ySquared = transceivers[i].second * transceivers[i].second; double hypoSquared = maxDist * maxDist; if (hypoSquared - ySquared < 0) { continue; } double x = sqrt(hypoSquared - ySquared); bounds.push_back({ max(transceivers[i].first - x, 0.0), min(transceivers[i].first + x, (double)L) }); } if (bounds.size() == 0) { return false; } double covered = bounds[0].second - bounds[0].first; double right = bounds[0].second; for (int i = 1; i < (int)bounds.size(); i++) { double currBound = bounds[i].second - bounds[i].first; currBound -= max(0.0, right - bounds[i].first); covered += max(0.0, currBound); right = max(bounds[i].second, right); } return covered >= L; } int main() { ios_base::sync_with_stdio(0); cin.tie(0); ll N, L; cin >> N >> L; vector<pair<double, double>> transceivers(N); for (int i = 0; i < N; i++) cin >> transceivers[i].first >> transceivers[i].second; double l = 0; double r = 1e18; double ans = 0; while (r - l >= 0.001) { double mid = l + (r - l) / 2; // cout << l << ' ' << r << ' ' << mid << '\n'; if (check(mid, transceivers, N, L)) { r = mid; ans = mid; } else { l = mid; } } printf("%0.7lf\n", ans); }
#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...