제출 #1201809

#제출 시각아이디문제언어결과실행 시간메모리
1201809AlfraganusMobile (BOI12_mobile)C++20
0 / 100
1096 ms31560 KiB
#include <bits/stdc++.h>
using namespace std;

#define ll long long
#define fs first
#define ss second
#define str string
#define endl '\n'
#define all(a) a.begin(), a.end()

#define print(a)          \
    for (auto x : a)      \
        cout << x << ' '; \
    cout << endl;

#define printmp(a)   \
    for (auto x : a) \
        cout << x.fs << ' ' << x.ss << endl;

#define matrix(a)             \
    for (auto x : a) {        \
        for (auto y : x)      \
            cout << y << ' '; \
        cout << endl;         \
    }

const int mod = 1e9 + 7;

void solve() {
    int n;
    long double L;
    cin >> n >> L;
    vector<array<long double, 2>> a(n);
    for(int i = 0; i < n; i ++)
        cin >> a[i][0] >> a[i][1];
    sort(all(a));
    
    auto dist = [&](long double x){
        long double mn = 5e18;
        for(int i = 0; i < n; i ++)
            mn = min(mn, abs(x - a[i][0]) * abs(x - a[i][0]) + a[i][1] * a[i][1]);
        return mn;
    };


    long double mn = 5e18, ans = -1;
    for(int i = 0; i < n - 1; i ++){
        long double l = min(L, max((long double)0, a[i][0])), r = min(L, max((long double)0, a[i + 1][0]));
        for(int i = 0; i < 100; i ++){
            long double mid1 = l + (r - l) / 3.0, mid2 = r - (r - l) / 3.0;
            if(dist(mid1) > dist(mid2))
                r = mid2;
            else
                l = mid1;
        }
        if(mn > dist(l))
            mn = dist(l), ans = l;
    }
    cout << fixed << setprecision(5) << ans;
}

signed main() {
    ios::sync_with_stdio(0), cin.tie(0), cout.tie(0);
    int t = 1;
    // cin >> t;
    while (t--) {
        solve();
        cout << 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...