/*
_____ _ _
/ ____| | | | |
| | __ _ __ __ _ ___ ___ _ _ _ __ ___ | |_ __ _| |_ ___
| | |_ | '__/ _` / __/ __| | | | '_ \ / _ \| __/ _` | __/ _ \
| |__| | | | (_| \__ \__ \ |_| | |_) | (_) | || (_| | || (_) |
\_____|_| \__,_|___/___/\__, | .__/ \___/ \__\__,_|\__\___/
__/ | |
|___/|_|
*/
#include <fstream>
#include <iostream>
#include <iomanip>
#include <algorithm>
#include <numeric>
#include <array>
#include <vector>
#include <set>
#include <map>
#include <stack>
#include <queue>
#include <cmath>
#include <cstring>
#include <bitset>
#include <string>
#include <sstream>
using namespace std;
using ll = long long;
const int INF = 1e6 + 5;
const int MOD = 1e9 + 7;
const int dx[4] = {1, -1, 0, 0};
const int dy[4] = {0, 0, 1, -1};
int N, L;
pair<ll, ll> xy[INF];
bool check (double radius) {
vector<pair<double, double>> seg;
for (int i = 0; i < N; i++) {
double horz = sqrt(radius * radius - xy[i].second * xy[i].second);
double left = xy[i].first - horz, right = xy[i].first + horz;
seg.push_back(make_pair(left, right));
}
double current = 0;
for (int i = 0; i < N; i++) {
if (seg[i].first <= current) current = max(current, seg[i].second);
}
return current >= L;
}
int main()
{
std::ios_base::sync_with_stdio(false); cin.tie(0);
// ifstream cin(".in");
// ofstream cout(".out");
cin >> N >> L;
for (int i = 0; i < N; i++) cin >> xy[i].first >> xy[i].second;
double l = 0, r = 1.5 * 1e9;
while (r - l > 1e-3) {
int m = (l + r) / 2;
if (check(m)) {
r = mid;
} else {
l = mid;
}
}
cout << fixed << setprecision(6) << l << '\n';
return 0;
}
/*
*
*/
//
Compilation message
mobile.cpp: In function 'int main()':
mobile.cpp:68:17: error: 'mid' was not declared in this scope
68 | r = mid;
| ^~~
mobile.cpp:70:17: error: 'mid' was not declared in this scope
70 | l = mid;
| ^~~