Submission #1222971

#TimeUsernameProblemLanguageResultExecution timeMemory
1222971iamhereforfunMobile (BOI12_mobile)C++20
100 / 100
354 ms16988 KiB
// IamHereForFun //

#include <bits/stdc++.h>

using namespace std;

#define LSOne(X) ((X) & -(X))

const int N = 1e6 + 5;
const int M = 15;
const int C = 26;
const int LG = 20;
const int R = 25e3 + 5;
const int B = 100;
const int O = 3e5 + 5;
const int INF = 1e9 + 5;
const int MOD = 998244353;
const int nx[] = {0, 1, 0, -1}, ny[] = {1, 0, -1, 0};

long long n, h;
vector<pair<long long, long long>> points;

bool chk(long double i)
{
    long double cur = 0;
    for(pair<long long, long long> p : points)
    {
        long double j = i*i - p.second*p.second;
        if(j < 0) continue;
        j = sqrt(j);
        if(cur >= p.first - j) cur = max(cur, p.first + j);
    }
    return cur >= h;
}

void solve()
{
    cin >> n >> h;
    for(int x = 0; x < n; x++)
    {
        int a, b; cin >> a >> b;
        points.push_back({a, b});
    }
    long double l = 0, r = 3e9;
    while(r - l > 1e-5)
    {
        long double m = (l + r)/2;
        if(!chk(m))        
        {
            l = m;
        }
        else
        {
            r = m;
        }
    }
    cout << fixed << setprecision(5) << l << "\n";
}

signed main()
{
    ios_base::sync_with_stdio(0);
    cin.tie(0);
    cout.tie(0);
    int t = 1;
    // cin >> t;
    for (int x = 1; x <= t; x++)
    {
        solve();
    }
    return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...