Submission #1349843

#TimeUsernameProblemLanguageResultExecution timeMemory
1349843NewtonabcMobile (BOI12_mobile)C++20
0 / 100
1096 ms65200 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+(1e-12),-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 a.second>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;
    for(int i=0;i<n;i++){
        ll x,y; cin>>x >>y;
        p.push_back({x,y});
    }
    double l=0,r=3e9;
    for(int i=0;i<100;i++){
        double mid=(l+r)/2;
        if(cal(mid)) r=mid;
        else l=mid;
    }
    cout<<fixed <<setprecision(8) <<l;
}
#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...