Submission #1094841

#TimeUsernameProblemLanguageResultExecution timeMemory
1094841KodikBalloons (CEOI11_bal)C++17
0 / 100
2071 ms3420 KiB
#include <bits/stdc++.h> using namespace std; #define ss second #define ff first typedef long long ll; typedef long double ld; #define int ll bool check(ld nr, ld lr, ld nx, ld lx){ ld radius = abs(nr-lr); ld distance = abs(nx-lx); ld pyt = lr + nr; return (radius*radius + distance*distance - pyt*pyt ) >= ld(1e-4); } signed main(){ ios_base::sync_with_stdio(false); cin.tie(NULL); int n; cin >> n; vector<ld> answer(n); stack<pair<ld,ld>> st; for(int i = 0; i < n; ++i){ ld cor, mr; cin >> cor >> mr; if(st.empty()){ answer[i] = mr; st.push({mr,cor}); }else{ while(true){ auto &[lr, lx] = st.top(); ld l = 0, r = mr; while(r-l>1e-4){ ld mid = l + (r-l+1)/2; if(check(mid, lr, cor, lx)){ l = mid; }else{ r = mid; } } mr = l; if(l>lr){ st.pop(); mr = l; if(st.empty()){ answer[i] = mr; st.push({mr,cor}); break; } }else{ st.push({mr,cor}); answer[i] = mr; break; } } } } for(int i = 0; i < n; ++i){ cout << answer[i] << '\n'; } 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...