Submission #1183118

#TimeUsernameProblemLanguageResultExecution timeMemory
1183118aminjon__Balloons (CEOI11_bal)C++17
0 / 100
163 ms9492 KiB
#include <bits/stdc++.h> #define all(x) (x).begin(), (x).end() #define endl '\n' typedef unsigned int uint; typedef long long ll; typedef long double ld; typedef unsigned long long ull; using namespace std; const ld Eps = 1e-5; ld dist(ld x1, ld y1, ld x2, ld y2) { return sqrt((x1 - x2) * (x1 - x2) + (y1 - y2) * (y1 - y2)); } void solve() { ll n; cin >> n; vector<ll> x(n + 1); vector<ll> r(n + 1); ll last = -1; vector<ld> ans(n + 1); set<pair<ld, ll>> s; for (int i = 1; i <= n; i++) { cin >> x[i] >> r[i]; while (!s.empty() && s.begin()->first < x[i]) { s.erase(s.begin()); } if (s.empty()) { ans[i] = r[i]; s.insert({x[i] + r[i] + r[i], i}); continue; } ll j = s.begin()->second; ld L = 0, R = r[i]; while (L + Eps < R) { ld mid = (L + R) / 2.0; bool ok = 1; if (dist(x[j], ans[j], x[i], mid) + Eps > ans[j] + mid) { // L = mid; } else { ok = 0; } if (ok) { L = mid; } else { R = mid; } } ans[i] = L; } cout << fixed << setprecision(10); for (int i = 1; i <= n; i++) { cout << ans[i] << endl; } } signed main() { ios_base::sync_with_stdio(NULL); cin.tie(NULL); cout.tie(NULL); ll t = 1; // cin >> t; while (t--) { solve(); } 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...