제출 #1221412

#제출 시각아이디문제언어결과실행 시간메모리
1221412juaquin_remonMobile (BOI12_mobile)C++20
0 / 100
930 ms15944 KiB
#include <bits/stdc++.h>

using namespace std;

using ll = long long;
using ld = long double;
const ld INF_R = 2e9L;

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

    ll N, L;
    cin >> N >> L;
    vector<ll> x(N), y(N);
    for(ll i = 0; i < N; i++){
        cin >> x[i] >> y[i];
    }

    auto covers = [&](ld R){
        // intentamos cubrir [0, L] con los intervalos de cada estación
        ld reach = 0.0L;
        for(ll i = 0; i < N; i++){
            // si la estación está demasiado lejos en y, no cubre la carretera
            if (fabsl(y[i]) > R) continue;

            // distancia horizontal desde x[i]
            ld dx = sqrtl(R*R - (ld)y[i]*y[i]);
            ld left  = x[i] - dx;
            ld right = x[i] + dx;
            if (left > reach) 
                return false;      // hueco sin cubrir entre reach y left
            reach = max(reach, right);
            if (reach >= L) 
                return true;       // ya cubrimos todo [0, L]
        }
        return (reach >= L);
    };

    // binaria para el menor R que cubra completamente la carretera
    ld lo = 0.0L, hi = INF_R;
    for(int it = 0; it < 200; it++){
        ld mid = (lo + hi) * 0.5L;
        if (covers(mid)) 
            hi = mid;
        else 
            lo = mid;
    }

    cout << fixed << setprecision(10) << hi << "\n";
    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...