#include <bits/stdc++.h>
#define db double
#define pb push_back
#define all(x) begin(x), end(x)
#define sz(x) ((int)(x).size())
using namespace std;
int n;
db L;
vector<pair<db, db>> cord;
bool ok(db x) {
    vector<pair<db, db>> seg;
    for (auto &[xi, yi] : cord) {
        if (yi > x) continue;
        db dx = sqrt(x * x - yi * yi);
        db l0 = max(0.0, xi - dx);
        db r0 = min(L, xi + dx);
        if (l0 > r0) continue;
        seg.pb({l0, r0});
    }
    if (seg.empty()) return false;
    sort(all(seg));
    db last = 0;
    for (auto &[l, r] : seg) {
        if (l > last + 1e-7) return false;
        last = max(last, r);
        if (last >= L - 1e-7) return true;
    }
    return last >= L - 1e-7;
}
void solve() {
    cin >> n >> L;
    cord.clear();
    for (int i = 0; i < n; ++i) {
        db x, y;
        cin >> x >> y;
        if (cord.empty() || cord.back().first != x) {
            cord.pb({x, y});
        }
    }
    n = sz(cord);
    db l = 0, r = 2e9;
    for (int it = 0; it < 100; ++it) {
        db mid = (l + r) / 2;
        if (ok(mid))
            r = mid;
        else
            l = mid;
    }
    cout << fixed << setprecision(6) << r << '\n';
}
int main() {
    ios::sync_with_stdio(false);
    cin.tie(nullptr);
    solve();
}
| # | 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... |