제출 #1352900

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

#define ld long double

struct Point{
    ld x, y;

};

void precision(int x){
	cout.setf(ios::fixed | ios::showpoint);
	cout.precision(x);
	return;
}

const int N = 1e6 + 10;

int n;
ld l;

const ld eps = 1e-11;

Point a[N];
bool check(ld m){
    vector<pair<ld, ld>>A;
    for(int i = 1; i <= n; i++){
        if(a[i].y - eps <= m){
            ld d = sqrt(m * m - a[i].y * a[i].y);
            A.push_back({a[i].x - d, a[i].x + d});
        }
    }
    ld mx = 0.0;
    for(int i = 0; i < A.size(); i++){
        if(A[i].first - eps <= mx){
            mx = max(mx, A[i].second);
        }
    }
    return mx + eps >= l;
}

int main(){
    cin >> n >> l;
    for(int i = 1; i <= n; i++){
        cin >> a[i].x >> a[i].y;
    }
    ld l = 0.0, r = 1e9, ans = 0.0;
    for(int it = 0; it < 35; it++){
        ld m = (l + r) / 2.0;
        if(check(m)){
            r = m - 1;
            ans = m;
        }else{
            l = m + 1;
        }
    }
    precision(20);
    cout << ans << 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...