Submission #573424

#TimeUsernameProblemLanguageResultExecution timeMemory
573424Rasoul006Mobile (BOI12_mobile)C++17
100 / 100
841 ms35384 KiB

#include <bits/stdc++.h>

#define endl "\n"

#define F first

#define S second

#define pb push_back

#define all(x) x.begin() , x.end()

#define mm1(dp) memset (dp , -1 , sizeof dp)

#define mm0(dp) memset (dp , 0 , sizeof dp)

#define mmo(dp) memset (dp , oo , sizeof dp)

//#define mid ((r+l)/2.0)

#define lx (n<<1)

#define rx ((n<<1)|1)

typedef long long ll;

using namespace std;

const int N = 1e6+5;

const int MOD = 1e9+7;

const long long oo = 4557430888798830399 ;

ll n ;
double le , x[N] , y[N] ;

bool ch(double m)
{
    double la = 0 ;

    for (int i = 0 ; i<n ; i++)
    {
        double p = sqrt((m*m) - (y[i]*y[i]));

//        cout << p << " " << x[i] - p << " " << la << endl ;

        if (x[i]-p <= la)
        {
            la = max (x[i]+p , la);
        }
//        
//        else
//        {
//            return false ;
//        }
    }

    return (la>=le ? true : false) ;
}

int main()
{
    ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);

    cin >> n >> le ;

    for (int i = 0 ; i<n ; i++)
    {
        cin >> x[i] >> y[i] ;
    }

    double l = 0 , r = 1e18 ;

    while (r-l > 0.0000001)
    {
        double mid = (r+l)/2.0 ;

        if (ch(mid))
        {
            r = mid ;
        }
        else
        {
            l = mid ;
        }
    }

    cout <<fixed << setprecision(4) << r << endl ;

    return 0;
}
#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...