Submission #1296503

#TimeUsernameProblemLanguageResultExecution timeMemory
1296503KindaGoodGamesMobile (BOI12_mobile)C++20
0 / 100
1098 ms31696 KiB
#include<bits/stdc++.h>

#define ll long long
#define int ll
#define double long double
#define pii pair<double,double>
#define tiii tuple<int,int,int>

using namespace std;

double INF = 1e16;

    int n;
    double L;

double dist(pii a, pii b){
    double x = a.first-b.first;
    double y = a.second-b.second;

    return sqrtl((x*x)+(y*y));
}

double intersect(pii a, pii b){
    double ydiff = a.second-b.second;
    double x1 = a.first; double x2 = b.first;

    double res1 = (x1+x2);
    double res2 = ydiff;
    res2 /= (x1-x2);

    double p = res1+res2;
    p /= 2.0L;
    p = min(p,L);
    p = max(p,0.0L);
    return p;
} 
    vector<pii> arr;    

double calc(double p){
    double mi = INF;
    for(int k = 0; k < n; k++){
        mi = min(mi, dist(arr[k], {p,0.0L}));
    }
    return mi;
}
int32_t main(){
    cin >> n >> L;
    arr.resize(n);
    for(int i = 0 ;i < n; i++){
        cin >> arr[i].first >> arr[i].second;
    }
    double r = 0;
    for(int i = 0 ;i < n; i++){
        for(int j = 0; j < i; j++){
            double p = -1;
            if(arr[i].first == arr[j].first) {
                p = arr[i].first;
            }else{
                p = intersect(arr[i],arr[j]); 
            }
            if(p < 0 || p > L) continue;
            r = max(r,calc(p));
        }
    }
    r = max(r,calc(0));
    r = max(r,calc(L));
    cout << fixed << setprecision(8); 
    cout << r << "\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...