Submission #1314335

#TimeUsernameProblemLanguageResultExecution timeMemory
1314335ashikur_Mobile (BOI12_mobile)C++20
In queue
0 ms0 KiB
#include <bits/stdc++.h>
#include <ext/pb_ds/assoc_container.hpp>
#include <ext/pb_ds/tree_policy.hpp>
using namespace std;
using namespace __gnu_pbds;
 
#define inf (ll)1e15
#define ll long long
#define lll __int128_t
#define pi pair<int, int>
#define pl pair<ll, ll>
#define vi vector<int>
#define vl vector<ll>
#define vd vector<double>
#define mod 1000000007
// #define mod 998244353
#define pie acos(-1.0)
#define LSOne(i) ((i) & -(i))
#define EPS 1e-9

struct point{
    double x, y;
};

double dist(point a, point b){
    return sqrt((a.x - b.x) * (a.x - b.x) + (a.y - b.y) * (a.y - b.y));
}

double val(vector<point> &vtr, double x){
    double ans = -inf;
    for(point p : vtr){
        ans = max(ans, dist({x, 0}, p));
    }
    return ans;
}

int main(){
    std::ios::sync_with_stdio(false);
    cin.tie(nullptr);

    ll n, m; cin >> n >> m;
    vector<point> vtr(n);
    for(ll i = 0; i < n; i++) cin >> vtr[i].x >> vtr[i].y;

    double lo = 0, hi = m, ans;
    for(int i = 0; i <= 50; i++){
        double m1 = lo + (hi-lo)/3;
        double m2 = hi - (hi-lo)/3;
        
        double val1 = val(vtr, m1);
        double val2 = val(vtr, m2);

        if(val1 <= val2){
            hi = m2, ans = val1;
        } else{
            lo = m1, ans = val2;
        }
    }
    cout << fixed << setprecision(5) << ans << "\n";
}