#include <iostream>
#include <stdio.h>
#include <math.h>
using namespace std;
int n;
long double x, y, a, b;
long double xl = -1, al;
long double dis(long double m) {
long double p = sqrt((x - a) * (x - a) + (m - y) * (m - y));
return p;
}
long double dis2(long double m) {
return sqrt((a - xl) * (a - xl) + (m - al) * (m - al));
}
long double Find() {
long double l = 0, r = b, ans = 0;
for (int i = 1; i <= 100; ++i) {
long double m = (l + r) / 2.0;
if (dis(m) >= y + m) {
if (xl == -1 || dis2(m) >= al + m) {
ans = m;
l = m;
} else {
r = m;
}
} else {
r = m;
}
}
return ans;
}
int main() {
cin.tie(nullptr);
cout.tie(nullptr);
ios_base::sync_with_stdio(false);
cin >> n;
x = -1e9;
y = 0;
for (int i = 1; i <= n; ++i) {
cin >> a >> b;
long double ans = Find();
printf("%.3Lf\n", ans);
xl = a;
al = ans;
if (abs(a + ans - x - y) <= 1e-10) continue;
if (a + ans > x + y) {
x = a;
y = ans;
}
}
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... |