Submission #1301578

#TimeUsernameProblemLanguageResultExecution timeMemory
1301578stas-badziBalloons (CEOI11_bal)C++20
30 / 100
130 ms4412 KiB
#include <iomanip>
#include <ios>
#include <iostream>
#include <stack>
#include <utility>

#define sqi(x)((x)*(long long)(x))
#define sqd(x)((x)*(long double)(x))
//#define overlapxr(x1,r1,x2,r2) (sqi(x1-x2)+sqi(r1-r2)<sqd(r1+r2))
#define overlapxr(x1,r1,x2,r2) ((long double)sqi(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,e=maxr+1;
            while ((e*10000-b*10000)>1) {
                auto m = (e+b)/2;
                if (overlap1(t,x,m)) e=m;
                else b=m;
            }
            maxr=std::min(maxr,e);
            if (maxr<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...