Submission #1148853

#TimeUsernameProblemLanguageResultExecution timeMemory
1148853LilPlutonBalloons (CEOI11_bal)C++20
20 / 100
2096 ms7568 KiB
#include <bits/stdc++.h> using namespace std; #define ld long double #define ll long long #define eb emplace_back const int inf = 1e9; signed main() { ios_base::sync_with_stdio(0); cin.tie(0); auto check = [&](int x1, ld y1, int x2, ld y2) -> bool { ld dist = sqrtl((x1 - x2) * (x1 - x2) + (y1 - y2) * (y1 - y2)); return dist <= (y1 + y2); }; ld eps = 1e-9; int n; cin >> n; vector<int> x(n); vector<ld> rr(n), ans(n); map<int, ld> active; for (int i = 0; i < n; ++i) { cin >> x[i] >> rr[i]; ld mn = rr[i]; auto it = active.lower_bound(x[i]); while (it != active.begin()) { auto left = prev(it); ld l = 0.0, r = rr[i], best = r; while (r - l > eps) { ld mid = (l + r) / 2; if (!check(left->first, left->second, x[i], mid)) { best = mid; l = mid; } else { r = mid; } } mn = min(mn, best); if(mn == rr[i]){ break; } it--; } ans[i] = mn; active[x[i]] = ans[i]; } cout << fixed << setprecision(3); for (int i = 0; i < n; ++i) { cout << ans[i] << '\n'; } }
#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...