#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 time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |