# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
1056805 | TimAni | Mobile (BOI12_mobile) | C++17 | 1094 ms | 56080 KiB |
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;
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, long double R) -> array<long double, 2> {
// y^2 = 0,
// y^2 = R^2 - (x - A.x)^2 + 2yA.y - A.y ^ 2;
// R^2 - (x - A.x) ^ 2 - A.y^2 = 0
// R^2 - x^2 + 2xA.x - A.x^2 - A.y^2 = 0
// x^2 - 2xA.x + A.x^2 + A.y^2 - R^2 = 0
// D = -4A.y^2 + 4R^2
if(abs(A.y) > R) {
return {L + 1, -1};
}
long double D = 4 * (R * R - A.y * A.y);
long double x1 = (2 * A.x - sqrt(D)) / 2;
long double x2 = (2 * A.x + sqrt(D)) / 2;
if(x1 < 0) x1 = 0; if(x2 > L) x2 = L;
return {x1, x2};
};
auto good = [&](long double R) {
vector<array<long double, 2>> segs(n);
for(int i = 0; i < n; i++) {
segs[i] = intersection(p[i], R);
}
sort(segs.begin(), segs.end());
long 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++;
}
if(r != L || l != 0) return 0;
return 1;
};
long double l = 0, r = hypot(2e9, 1e9);
for(int i = 0; i < 100; i++) {
long double R = (r + l) / 2;
if(good(R)) {
r = R;
}
else {
l = R;
}
}
cout << r << endl;
}
int main() {
cin.tie(0)->sync_with_stdio(0);
int T = 1;
//cin >> T;
while(T--) solve();
return 0;
}
Compilation message (stderr)
# | 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... |