#include <bits/stdc++.h>
#define TIME (1.0 * clock() / CLOCKS_PER_SEC)
#define FOR(i,a,b) for (int i=(a),_b=(b); i<=_b; i++)
#define FOD(i,a,b) for (int i=(a),_b=(b); i>=_b; i--)
#define FUL(n) (((1LL)<<(n))-1)
#define BIT(n,k) (((n)>>(k))&1)
#define fi first
#define se second
#define pb push_back
#define all(x) (x).begin(), (x).end()
#define sz(x) ((int)(x).size())
#define sqr(x) (1LL * (x) * (x))
using namespace std;
using ll = long long;
using ull = uint64_t;
using ld = double;
template<class T> using ve = vector<T>;
using vi = vector<int>;
using vll = vector<ll>;
using ii = pair<int,int>;
using pll = pair<ll,ll>;
using pld = pair<ld,ld>;
const char el = '\n';
template<class T> void print(T a[], int n) { FOR(i,0,n-1) cerr << a[i] << ' '; cerr << el; }
template<class T, class U> bool maxi(T& x, const U& y) { return y>x?(x=y,1):0; }
template<class T, class U> bool mini(T& x, const U& y) { return y<x?(x=y,1):0; }
const int maxn = 1e6+7;
const ld eps = 1e-3;
int n;
int L;
ii p[maxn];
pld coverage(int x, int y, ld r) {
if (r < abs(y)) exit(1);
ld s = sqrt(abs(r*r - 1.0*y*y));
return {1.0*x - s, 1.0*x + s};
}
bool ok(ld k) {
ve<pld> lr;
FOR(i,1,n) if (abs(p[i].se) <= k) {
lr.pb(coverage(p[i].fi, p[i].se, k));
}
if (!sz(lr)) return false;
sort(all(lr));
ld cl = lr[0].fi, cr = lr[0].se;
FOR(i,1,sz(lr)-1) {
if (lr[i].fi > cr) return false;
maxi(cr, lr[i].se);
}
return (cl <= 0) && (cr >= L);
}
void solve() {
cin>>n>>L;
FOR(i,1,n) cin>>p[i].fi>>p[i].se;
ld l = 0, r = 3.0*L;
int cnt = 0;
while (abs(l-r) >= eps) {
ld mid = (l+r)/2;
if (ok(mid)) r = mid;
else l = mid;
cnt++;
}
cout << fixed << setprecision(6);
cout << l;
// cerr << el;
// cerr << cnt;
}
#define IN ".inp"
#define OUT ".out"
//#define NAME "test"
signed main() {
ios_base::sync_with_stdio(false); cin.tie(nullptr);
#ifndef NAME
if (fopen("test.inp", "r")) freopen("test.inp", "r", stdin);
#endif
#ifdef NAME
freopen(NAME IN, "r", stdin);
freopen(NAME OUT, "w", stdout);
#endif
int tt=1;
// cin>>tt;
while (tt--) solve();
cerr << el << "Time elapsed: " << TIME << " s";
return 0;
}
컴파일 시 표준 에러 (stderr) 메시지
mobile.cpp: In function 'int main()':
mobile.cpp:83:52: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
83 | if (fopen("test.inp", "r")) freopen("test.inp", "r", stdin);
| ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~
# | 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... |