제출 #1163531

#제출 시각아이디문제언어결과실행 시간메모리
1163531kedimestanMobile (BOI12_mobile)C++20
0 / 100
845 ms16068 KiB
#include <iostream>
#include <vector>
#include <cmath>
#include <iomanip>

using namespace std;

// Function to calculate the Euclidean distance from a point (x, 0) on the highway to a BTS at (xi, yi)
double distance(double x, double xi, double yi) {
    return sqrt((x - xi) * (x - xi) + yi * yi);
}

// Function to find the nearest BTS to a point (x, 0) on the highway
double nearestDistance(double x, const vector<pair<double, double>>& stations) {
    double minDist = 1e18; // Initialize with a large value
    for (const auto& station : stations) {
        double dist = distance(x, station.first, station.second);
        if (dist < minDist) {
            minDist = dist;
        }
    }
    return minDist;
}

int main() {
    int N, L;
    cin >> N >> L;

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

    // Binary search to find the point x[q] that maximizes the distance to the nearest BTS
    double left = 0.0, right = L;
    double maxDist = 0.0;

    // Perform binary search until the search space is small enough
    while (right - left > 1e-7) {
        double mid = (left + right) / 2.0;

        // Find the nearest distance at mid and mid + epsilon
        double distMid = nearestDistance(mid, stations);
        double distMidEpsilon = nearestDistance(mid + 1e-7, stations);

        // Update the maximum distance found so far
        if (distMid > maxDist) {
            maxDist = distMid;
        }

        // Adjust the search boundaries based on whether we are on the increasing or decreasing part
        if (distMid < distMidEpsilon) {
            left = mid;
        } else {
            right = mid;
        }
    }

    // Output the result with the required precision
    cout << fixed << setprecision(6) << maxDist << endl;

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