This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include <bits/stdc++.h>
int main() {
std::ios_base::sync_with_stdio(false);
std::cin.tie(nullptr);
int n;
double L;
std::cin >> n >> L;
std::vector<std::vector<int>> p(n, std::vector<int>(2, 0));
for (int i = 0; i < n; ++i) {
std::cin >> p[i][0] >> p[i][1];
p[i][1] = abs(p[i][1]);
}
sort(p.begin(), p.end(), [](auto a, auto b) {
if (a[1] == b[1]) return a[0] < b[0];
return a[1] < b[1];
});
double d1 = sqrt(p[0][0] * p[0][0] + p[0][1] * p[0][1]);
double d2 = sqrt((p[0][0] - L) * (p[0][0] - L) + p[0][1] * p[0][1]);
double lo = 0, hi = std::max(d1, d2);
while(hi - lo > 1e-3) {
double mi = (lo + hi) / 2;
std::vector<std::vector<double>> u;
bool ltok = false;
bool rtok = false;
for (int i = 0; i < n; ++i) {
double h = p[i][1];
if (h > mi)
continue;
double lf = p[i][0] - sqrt(1ll * mi * mi - 1ll * h * h);
double rt = p[i][0] + sqrt(1ll * mi * mi - 1ll * h * h);
if (rt < 0.0 || lf > L)
continue;
lf = std::max(lf, 0.0);
rt = std::min(rt, L);
u.push_back({lf, rt});
if (rt == L)
rtok = true;
if (lf == 0.0)
ltok = true;
}
sort(u.begin(), u.end());
bool ok = rtok & ltok;
double rt = -1;
for (int i = 0; i < (int)u.size() && ok; ++i) {
if (i == 0) {
rt = u[i][1];
}
else {
if (u[i][0] > rt)
ok = false;
rt = u[i][1];
}
}
if (ok) {
hi = mi;
}
else {
lo = mi;
}
}
std::cout << lo << "\n";
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... |
# | 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... |