Submission #1266716

#TimeUsernameProblemLanguageResultExecution timeMemory
1266716tritranminh2808Balloons (CEOI11_bal)C++20
40 / 100
267 ms11472 KiB
#include <bits/stdc++.h>
using namespace std;
int x[100005],r[100005];
long double ans[100005];
int main(){
    ios_base::sync_with_stdio(0);
    cin.tie(0);
    int n; cin >> n;
    for(int i=1;i<=n;i++)  cin>> x[i] >> r[i];
    // stack <int> st;
    set<pair <long double, int > > st;
    ans[1]=r[1]*1.0;
    st.insert({1.0*(r[1]+x[1]),1});
    for(int i=2;i<=n;i++){
        long double cur=r[i]*1.0;
        vector <pair <long double , int > > xet;
        int dd=8;
        while(dd--&&!st.empty()){
            xet.push_back(*st.rbegin());
            st.erase(xet.back());
        }
        for(auto k:xet){
            long double xj=x[k.second],rj=ans[k.second];
            long double ri=1.0*(x[i]-xj)*(x[i]-xj)/(4.0*rj);
            cur=min(cur,ri);
        }
        ans[i]=cur;
        st.insert({1.0*(ans[i]+x[i]),i});
        for(auto j:xet) st.insert(j);
    }
    for(int i=1;i<=n;i++) cout << fixed << setprecision(3) << ans[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...