#include <bits/stdc++.h>
using namespace std;
const long long mod = 1e9 + 7;
const int MaxN = 1e6 + 5;
int n;
long double l;
pair<long double, long double> arr[MaxN];
void Inp()
{
cin >> n >> l;
for (int x = 1; x <= n; x++)
{
cin >> arr[x].first >> arr[x].second;
}
}
pair<long double, long double> now[3];
pair<long double, long double> add[3];
pair<long double, long double> tmp[3];
bool Check(long double k)
{
int i = 1, j = 1;
now[i] = make_pair(0, l);
for (int x = 1; x <= n; x++)
{
if (abs(arr[x].second) >= k)
{
continue;
}
long double p = sqrtl(k * k - arr[x].second * arr[x].second);
j = 0;
if (arr[x].first - p >= 0.0)
{
j++;
add[j] = make_pair(0, min((long double)arr[x].first - p, l));
}
if (arr[x].first + p <= l)
{
j++;
add[j] = make_pair(max((long double)arr[x].first + p, (long double)0), l);
}
int tmpi = i;
for (int y = 1; y <= i; y++)
{
tmp[y] = now[y];
}
i = 0;
for (int x = 1; x <= tmpi; x++)
{
for (int y = 1; y <= j; y++)
{
long double l = max(tmp[x].first, add[y].first), r = min(tmp[x].second, add[y].second);
if (l <= r)
{
i++;
now[i] = make_pair(l, r);
}
}
}
}
return i > 0;
}
void Exc()
{
long double l = 0, r = 1e10, mid, res = 0;
while (r - l > 1e-3)
{
mid = (l + r) / 2.0;
if (Check(mid))
{
res = mid;
l = mid;
}
else
{
r = mid;
}
}
cout << fixed << setprecision(3) << res;
}
int main()
{
ios_base::sync_with_stdio(false);
cin.tie(nullptr);
int test = 1;
//cin >> test;
for (int x = 1; x <= test; x++)
{
Inp();
Exc();
}
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... |