#include <bits/stdc++.h>
using namespace std;
inline namespace FileIO {
void setIn(string s) { (void)!freopen(s.c_str(), "r", stdin); }
void setOut(string s) { (void)!freopen(s.c_str(), "w", stdout); }
void setIO(string s = "") {
ios::sync_with_stdio(false);
cin.exceptions(cin.failbit); // throws exception when do something illegal
cin.tie(nullptr); // unsync C / C++ I/O streams
cout.tie(nullptr); // unsync C / C++ I/O streams
if (int(s.size())) setIn(s + ".in"), setOut(s + ".out"); // for old USACO
}
} // namespace FileIO
#define endl "\n"
// #define all(x) (x).begin(), (x).end()
// #define rall(x) (x).rbegin(), (x).rend()
using ll = long long;
// using ul = unsigned long long;
using sz = size_t;
template <typename... Ts>
using V = vector<Ts...>;
template <typename T1, typename T2>
using P = pair<T1, T2>;
// template <typename T, sz N> using A = array<T, N>;
// template <typename... Ts> using D = deque<Ts...>;
// template <typename... Ts> using T = tuple<Ts...>;
// template <typename... Ts> using uS = unordered_set<Ts...>;
// template <typename... Ts> using S = set<Ts...>;
// template <typename... Ts> using uM = unordered_map<Ts...>;
// template <typename... Ts> using M = map<Ts...>;
// template <typename... Ts> using umM = unordered_multimap<Ts...>;
// template <typename... Ts> using mM = multimap<Ts...>;
// template <typename... Ts> using pQ = priority_queue<Ts...>;
class Solution {
public:
auto Solve(sz n, sz len, V<P<ll, ll>> &p) {
auto fn = [&](double mid) {
double curr = 0;
for (int i = 0; i < n; i++) {
double delta = sqrt(mid * mid - p[i].second * p[i].second);
double a = p[i].first - delta, b = p[i].first + delta;
if (a <= curr) curr = max(curr, b);
}
return curr >= len;
};
double l = 1, r = 1.5e9;
while (r - l > 1e-3) {
double mid = (l + r) / 2, curr = 0;
if (fn(mid))
r = mid;
else
l = mid;
}
return l;
}
};
int main() {
setIO();
Solution solve;
sz __ = 1ul;
for (auto _ = 0ul; _ < __; ++_) {
// input
sz n, l;
cin >> n >> l;
V<P<ll, ll>> p(n);
for (auto &pp : p) cin >> pp.first >> pp.second;
// solve
auto ans = solve.Solve(n, l, p);
// output
cout << fixed << setprecision(4) << ans << endl;
}
}
# | 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... |