제출 #1294383

#제출 시각아이디문제언어결과실행 시간메모리
1294383sritthebossMobile (BOI12_mobile)C++20
0 / 100
238 ms16096 KiB
#include "bits/stdc++.h"
#define INF 1e18
using namespace std;

bool test(int n, int l, double r, vector<pair<double, double>> stations) {
    vector<pair<double, double>> intervals;

    for (int i = 0; i < n; i++) {
        if (stations[i].second >= -r && stations[i].second <= r) {
            double x = stations[i].first;
            double y = stations[i].second;
            double lower = x - sqrt(pow(r, 2) - pow(y, 2));
            double upper = x + sqrt(pow(r, 2) - pow(y, 2));
            intervals.push_back({lower, upper});
        }
    }

    stack<pair<double, double>> s;

    for (auto interval : intervals) {
        while (!s.empty() && s.top().second >= interval.first) {
            interval = {min(interval.first, s.top().first), max(interval.second, s.top().second)};
            s.pop();
        }
        s.push(interval);
    }

    while (!s.empty()) {
        if (s.top().first <= 0 && s.top().second >= l) {
            return true;
        }
        s.pop();
    }

    return false;

}

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

    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;
    }

    double lo = 0, hi = 1.1e9;

    while (hi - lo < 1e-3) {
        double mid = lo + (hi - lo) / 2;
        if (test(n, l, mid, stations)) {
            hi = mid;
        } else {
            lo = mid + 1;
        }
    }

    cout << lo << endl;


}


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