Submission #1100291

#TimeUsernameProblemLanguageResultExecution timeMemory
1100291michifiedBalloons (CEOI11_bal)C++17
60 / 100
574 ms6640 KiB
#include <bits/stdc++.h> #define ll long long #define db double #define lid id * 2 + 1 #define rid id * 2 + 2 using namespace std; const ll mod = 1e9 + 7; db bestR(db x1, db r1, db x2, db r2) { db l = 0, r = r2 + 1; while (l < r - 0.000001) { db mid = (l + r) / 2; if (sqrt((x2 - x1) * (x2 - x1) + abs(r1 - mid) * abs(r1 - mid)) >= r1 + mid) l = mid; else r = mid - 0.000001; } return min(r2, l); } int main() { // ifstream cin("balancing.in"); // ofstream cout("balancing.out"); int n, i; cin >> n; vector<db> x(n), r(n); for (i = 0; i < n; i++) cin >> x[i] >> r[i]; vector<db> ans(n); stack<int> st; ans[0] = r[0]; st.push(0); for (i = 1; i < n; i++) { db res = r[i]; while (not st.empty()) { res = min(res, bestR(x[st.top()], ans[st.top()], x[i], r[i])); if (res >= ans[st.top()]) st.pop(); else break; } ans[i] = res; st.push(i); } cout << fixed << setprecision(3); for (i = 0; i < n; i++) cout << ans[i] << endl; 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...