Submission #1308960

#TimeUsernameProblemLanguageResultExecution timeMemory
1308960Euclid73Mobile (BOI12_mobile)C++20
100 / 100
915 ms16064 KiB
#include <bits/stdc++.h>
using namespace std;

#define ll long long

const ll MAXN=1e6+5;

/*
binary search on the answer

for a given radius r we can take intervals on the x-axis that have dist less than r.
just need to make sure the union covers 0 to l
*/

ll n;
double l, x[MAXN], y[MAXN];

bool works(double r)
{
    double c=0;
    for (int i=0; i<n; i++)
    {
        double d=sqrt(r*r-y[i]*y[i]);
        double a=x[i]-d, b=x[i]+d;
        if (a<=c)
        {
            c=max(c, b);
        }
    }
    return c>=l;
}

int main()
{
    cin >> n >> l;
    for (int i=0; i<n; i++)
    {
        cin >> x[i] >> y[i];
    }
    double L=1, R=1e10, mid;
    while (L<R-0.001)
    {
        mid=(L+R)/2;
        if (works(mid))
        {
            R=mid;
        }
        else
        {
            L=mid;
        }
    }
    cout << fixed << setprecision(3) << L << "\n";
}
#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...