제출 #1349840

#제출 시각아이디문제언어결과실행 시간메모리
1349840NewtonabcMobile (BOI12_mobile)C++20
0 / 100
1097 ms65228 KiB
#include<bits/stdc++.h>
#define ll long long
using namespace std;
vector<pair<double,double>> p;
ll L;
bool cal(double d){
    vector<pair<double,int>> ev;
    for(auto [x,y]:p){
        if(d<=y) continue;
        double k=sqrt(d*d-y*y);
        ev.push_back({x-k,1});
        ev.push_back({x+k,-1});
    }
    ev.push_back({0,0});
    ev.push_back({L,0});
    sort(ev.begin(),ev.end(),[&](pair<double,int> a,pair<double,int> b){
        if(a.first!=b.first) return a.first<b.first;
        return abs(a.second)>abs(b.second);
    });
    int st=0,ac=0;
    bool ok=true;
    for(auto[ind,ch]:ev){
        ac+=ch;
        if(ind==0){
            st=1;
        }
        if(ind==L){
            st=0;
        }
        if(st && ac==0) ok=false;
    }
    return ok;
}
int main(){
    int n;
    cin>>n >>L;
    ll l=1,r=3e18;
    for(int i=0;i<n;i++){
        ll x,y; cin>>x >>y;
        p.push_back({x,y});
    }
    while(l<r){
        ll mid=(l+r)/2LL;
        double use=(double)mid/(double)(1e9);
        if(cal(use)) r=mid;
        else l=mid+1LL;
    }
    double ans=(double)l/(double)(1e9);
    cout<<fixed <<setprecision(8) <<ans;
}
#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...