Submission #1332365

#TimeUsernameProblemLanguageResultExecution timeMemory
1332365ug12Mobile (BOI12_mobile)C++20
0 / 100
1097 ms48216 KiB
#include <bits/stdc++.h>
using namespace std;
using ll = long long;
#define int ll
using pii = pair<double, double>;
#define x first
#define y second

const int N = 1e6 + 5, M = 1e6 + 5;
const double eps = 1e-4;
int n, len;
vector<pii> a(N);

bool check(double mid){
    
    vector<pii> p;
    double t = mid * mid;
    for(int i = 1;i <= n;i++){
        double h = abs(a[i].y);
        if(h >= mid) continue;
        p.push_back({a[i].x - sqrt(t - h * h), a[i].x + sqrt(t - h * h)});  
    }

    sort(p.begin(), p.end());

    double r = p[0].second;
    for(pii &i : p){
        if(i.x > r) return false;
        r = max(r, i.y);
    }

    return r >= len;

}

void solve(){

    cin >> n >> len;
    for(int i = 1;i <= n;i++) cin >> a[i].x >> a[i].y;

    double l = 0, r = 2e9, mid;
    while(r - l >= eps){
        mid = (l + r) / 2;
        if(check(mid)) r = mid - eps;
        else l = mid + eps;
    }

    cout << fixed << setprecision(12) << r + eps;

}
 
signed main(){
    ios::sync_with_stdio(false), cin.tie(nullptr), cout.tie(nullptr);

    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...