# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
671160 | vjudge1 | Mobile (BOI12_mobile) | C++14 | 943 ms | 31436 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.
#include <iostream>
#include <cstdio>
#include <cmath>
#include <cstring>
#include <vector>
#include <map>
#include <set>
#include <stack>
#include <queue>
#include <algorithm>
using namespace std;
#define rep(i, a, b) for(int i = a; i < (b); ++i)
#define all(x) begin(x), end(x)
#define sz(x) (int)(x).size()
#define mp make_pair
#define pb push_back
#define f first
#define s second
#define lb lower_bound
#define ub upper_bound
using vi = vector<int>;
using ll = long long;
using pii = pair<ll, int>;
const int maxn = 1e6 + 7;
double x[maxn], y[maxn];
double L;
int n;
bool check(double r) {
vector<pair<double, double>> seg;
rep(i, 0, n) {
if (abs(y[i]) < r) {
double dy = abs(y[i]);
double tmp = r * r - dy * dy;
double dx = sqrt(tmp);
double x1 = x[i] - dx, x2 = x[i] + dx;
if (x1 < 0.0 && x2 < 0.0) continue;
if (x1 > L && x2 > L) continue;
if (seg.empty()) {
seg.push_back({x1, x2});
} else {
while (!seg.empty()) {
auto p = seg.back();
if (p.f >= x1 && p.s <= x2) {
seg.pop_back();
} else if (p.f <= x1 && p.s <= x2 && p.s >= x1) {
seg.pop_back();
x1 = p.f;
} else {
break;
}
}
seg.push_back({x1, x2});
}
}
}
if (seg.size() >= 1) {
if (seg[0].f <= 0 && seg[0].s >= L) return true;
}
return false;
}
int main() {
//ios::sync_with_stdio(false);
scanf("%d %lf", &n, &L);
rep(i, 0, n) {
scanf("%lf %lf", &x[i], &y[i]);
}
double l = 0.0, r = 1e9;
while (r - l > 0.0001) {
double mid = l + (r - l) / 2.0;
if (check(mid)) {
r = mid;
} else {
l = mid;
}
}
printf("%.6lf\n", l);
}
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... |