This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
// time-limit: 3000
#include <bits/stdc++.h>
using namespace std;
using ll = long long;
const double eps = 1e-6;
struct point {
int x{}, y{};
};
void solve() {
int n, L;
cin >> n >> L;
vector<point> p(n);
for(int i = 0; i < n; i++) {
cin >> p[i].x >> p[i].y;
}
auto intersection = [&](const point& A, double R) -> array<double, 2> {
if(abs(A.y) > R) {
return {L, -1};
}
double D = 1.0 * R * R - 1.0 * A.y * A.y; // divided by 4
double x1 = A.x - sqrt(D);
double x2 = A.x + sqrt(D);
if(x2 < x1) swap(x1, x2);
if(x1 < 0) x1 = 0;
if(x2 > L) x2 = L;
return {x1, x2};
};
auto good = [&](double R) {
vector<array<double, 2>> segs(n);
for(int i = 0; i < n; i++) {
segs[i] = intersection(p[i], R);
}
sort(segs.begin(), segs.end());
double l = segs[0][0], r = segs[0][1];
int i = 0;
while(i + 1 < n && segs[i + 1][0] <= r) {
r = max(segs[i + 1][1], r);
i++;
}
return r >= L && l <= 0;
};
double l = 0, r = 4e9;
while(r - l > eps) {
double R = (r + l) / 2;
if(good(R)) {
r = R;
}
else {
l = R;
}
}
cout << fixed << setprecision(-log10(eps)) << r << endl;
}
int main() {
cin.tie(0)->sync_with_stdio(0);
double T = 1;
//cin >> T;
while(T--) solve();
return 0;
}
Compilation message (stderr)
mobile.cpp: In lambda function:
mobile.cpp:23:21: warning: narrowing conversion of 'L' from 'int' to 'double' [-Wnarrowing]
23 | return {L, -1};
| ^
# | 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... |
# | 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... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |