Submission #1271197

#TimeUsernameProblemLanguageResultExecution timeMemory
1271197sopaipillaMobile (BOI12_mobile)C++20
0 / 100
858 ms31776 KiB
#include <bits/stdc++.h>
#define int long long
#define pii pair<long double, long double>
#define fst first
#define snd second
#define endl "\n"
using namespace std;

const int inf=0x3f3f3f3f;
int32_t main() {
    ios_base::sync_with_stdio(false);
    cin.tie(0);
    
    int n, m;
    cin >> n >> m;
    pii p[n];
    for(auto &[x,y] : p) {
        cin >> x >> y;
        y=abs(y);
    }

    stack<pair<long double,int>> mnstk;
    long double ans=inf, dist;
    for(int i=0; i<n; ++i) {
        dist = (m-p[i].fst)*(m-p[i].fst);
        dist += p[i].snd*p[i].snd;
        dist = sqrt(dist);

        while(!mnstk.empty()) {
            auto &[d,j] = mnstk.top();
            
            long double aux = (p[i].fst*p[i].fst) + (p[i].snd*p[i].snd);
            aux -= (p[j].fst*p[j].fst) + (p[j].snd*p[j].snd);
            aux /= 2*(p[i].fst-p[j].fst);
            aux = (p[i].fst-aux)*(p[i].fst-aux) + (p[i].snd*p[i].snd);
            dist = max(dist, sqrt(aux));

            if(dist>=d) break;
            mnstk.pop();
        }
        
        mnstk.push({dist,i});
        ans=min(ans,dist);
    }
    cout << ans << endl;
}
#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...