제출 #1347534

#제출 시각아이디문제언어결과실행 시간메모리
1347534st67Mobile (BOI12_mobile)C++20
100 / 100
415 ms16064 KiB
#include <iostream>
#include <vector>
#include <cmath>
#include <iomanip>
#include <algorithm>

using namespace std;

bool check(double R, int N, double L, const vector<pair<double, double>>& stations) {
    double current_right = 0.0;
    
    for (int i = 0; i < N; ++i) {
        double x = stations[i].first;
        double y = abs(stations[i].second);
        
        if (y > R) continue;
        
        double d = sqrt(R * R - y * y);
        double left = x - d;
        double right = x + d;
        
        if (left <= current_right) {
            current_right = max(current_right, right);
        }
    }
    
    return current_right >= L;
}

int main() {
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);

    int N;
    double L;
    
    if (!(cin >> N >> L)) return 0;

    vector<pair<double, double>> stations(N);
    for (int i = 0; i < N; ++i) {
        cin >> stations[i].first >> stations[i].second;
    }

    double low = 0.0;
    double high = 4e9; 
    
    for (int iter = 0; iter < 80; ++iter) {
        double mid = low + (high - low) / 2.0;
        
        if (check(mid, N, L, stations)) {
            high = mid;
        } else {
            low = mid;
        }
    }

    cout << fixed << setprecision(6) << low << "\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...