Submission #1221202

#TimeUsernameProblemLanguageResultExecution timeMemory
1221202boclobanchatBalloons (CEOI11_bal)C++20
50 / 100
1208 ms2712 KiB
#include<bits/stdc++.h> using namespace std; vector< pair<double,double> > vi; double dis(double x1,double y1,double x2,double y2) { return sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2)); } double get(pair<double,double> p,double X,double R) { double lt=0,rt=R,ans=0; while(rt-lt>1e-5) { double mid=(lt+rt)/2; if(dis(p.first,p.second,X,mid)>=mid+p.second) lt=ans=mid; else rt=mid; } return ans; } int main() { ios::sync_with_stdio(0); cin.tie(0); cout.tie(0); int n; cin>>n; for(int i=1;i<=n;i++) { long long X,R; cin>>X>>R; if(i==1) { cout<<R<<"\n"; vi.push_back({X,R}); } else { double ans=R; for(int j=max(0,(int)vi.size()-20);j<vi.size();j++) ans=min(ans,get(vi[j],X,R)); cout<<setprecision(6)<<fixed<<ans<<"\n"; while(!vi.empty()&&vi.back().second<=ans) vi.pop_back(); vi.push_back({X,ans}); } } }
#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...