This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include <bits/stdc++.h>
using namespace std;
#define ss second
#define ff first
typedef long long ll;
typedef long double ld;
#define int ll
bool check(const ld& l,const ld& radius,const vector<pair<ld,ld>> &bases){
stack<pair<bool,ld>> st; // bool 1 = start, 0 end
for(auto &[x, y] : bases){
ld x_on_highway = sqrtl(radius*radius-y*y);
ld start = x - x_on_highway;
ld end = x + x_on_highway;
bool push_start = true;
while(!st.empty()){
ld cor = st.top().ss;
/*
if my start is earlier than last ending or starting we can remove them, at the end
all we want not to end when there is no start
*/
if(start<=cor){
if(!st.top().ff){
push_start = 0;
}else if(st.top().ff){
push_start = 1;
}
st.pop();
}else{
break;
}
}
if(push_start) st.push({1,start}); // do we push start if we removed only end !no
st.push({0,end});
}
bool ok = (st.size()==2);
/*
if everything is correct, the
we should have in stack only start and end
if we dont then that means than somwhere we have a not covered interval
*/
while(!st.empty()){
if(ok){
if(!st.top().ff){
ok &= (st.top().ss>=l);
}else if(st.top().ff){
ok &= (st.top().ss<=0);
}
st.pop();
}else{
break;
}
}
return ok;
}
signed main(){
ios_base::sync_with_stdio(false);
cin.tie(NULL);
ld n, l;
cin >> n >> l;
vector<pair<ld,ld>> bases(n);
for(int i = 0; i < n; ++i){
ld x, y;
cin >> x >> y;
bases[i] = {x,abs(y)}; // shouldnt be a problem to set y to its abs
}
sort(bases.begin(), bases.end(), [&](const auto&a,const auto&b){
if(a.ff==b.ff){
return a.ss < b.ss; // we want to have the closest first, becasue it will cover the geaters interval
}
return a.ff < b.ff;
});
ld left = 0, right = 2e9;
while(right-left>1e-7){
ld mid = left + (right-left)/2;
if(check(left,mid, bases)){
// ak sedi zmensujem
right = mid;
}else{
left = mid;
}
}
cout << fixed << setprecision(3) << right;
return 0;
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |