#include <bits/stdc++.h>
#define all(x) (x).begin(), (x).end()
#define endl '\n'
typedef unsigned int uint;
typedef long long ll;
typedef long double ld;
typedef unsigned long long ull;
using namespace std;
const ld Eps = 1e-5;
ld dist(ld x1, ld y1, ld x2, ld y2)
{
return sqrt((x1 - x2) * (x1 - x2) + (y1 - y2) * (y1 - y2));
}
void solve()
{
ll n;
cin >> n;
vector<ll> x(n + 1);
vector<ll> r(n + 1);
ll last = -1;
vector<ld> ans(n + 1);
for (int i = 1; i <= n; i++)
{
cin >> x[i] >> r[i];
if (i == 1)
{
last = i;
ans[i] = r[i];
continue;
}
ld L = 0, R = r[i];
while (L + Eps < R)
{
ld mid = (L + R) / 2.0;
bool ok = 1;
for (int j = 1; j < i; j++)
{
if (dist(j, ans[j], x[i], mid) + Eps > ans[j] + mid)
{
// L = mid;
}
else
{
ok = 0;
}
}
if(ok){
L = mid;
}
else{
R = mid;
}
}
ans[i] = L;
}
cout<<fixed<<setprecision(10);
for(int i = 1;i <= n;i++){
cout<<ans[i]<<endl;
}
}
signed main()
{
ios_base::sync_with_stdio(NULL);
cin.tie(NULL);
cout.tie(NULL);
ll t = 1;
// cin >> t;
while (t--)
{
solve();
}
return 0;
}
# | 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... |