Submission #1301571

#TimeUsernameProblemLanguageResultExecution timeMemory
1301571stas-badziBalloons (CEOI11_bal)C++20
10 / 100
116 ms4408 KiB
#include <iomanip> #include <ios> #include <iostream> #include <stack> #include <utility> #define sq(x)((x)*(x)) #define overlapxr(x1,r1,x2,r2) (sq(x1-x2)+sq(r1-r2)<sq(r1+r2)) //#define overlapxr(x1,r1,x2,r2) (sq(x1-x2)<4*(r1)*(r2)) #define overlap1(a,x2,r2) overlapxr(a.first,a.second,x2,r2) #define overlap(a,b) overlapxr(a.first,a.second,b.first,b.second) int main() { std::cin.tie(0)->sync_with_stdio(0); int n,x,r; std::cin >> n >> x >> r; std::stack<std::pair<int, long double>> st; std::cout << r << ".000" << std::fixed << std::setprecision(3); st.push({x,r}); for (int i=1;i<n;++i) { std::cin >> x >> r; long double maxr = r; while (!st.empty()) { auto t = st.top(); long double b=0; while (maxr-b>5e-4) { auto m = (maxr+b)/2; if (overlap1(t,x,m)) maxr+=(b-maxr)/2; else b+=(maxr-b)/2; } if ((maxr=b)<t.second) break; st.pop(); } st.emplace(x,maxr); std::cout << '\n' << maxr; } }
#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...