#include <bits/stdc++.h>
#define ld long double
using namespace std;
struct range{
ld x,y,l,r;
};
ld special_inters(ld x1,ld y1,ld x2,ld y2){
return (x1*x1-x2*x2+y1*y1-y2*y2)/(2*(x1-x2));
}
vector<range>range;
int n,len;
int const NMAX=1000005;
struct point{
int x,y;
}points[NMAX];
void read(){
cin>>n>>len;
int i;
for(i=1;i<=n;++i)
cin>>points[i].x>>points[i].y;
}
void get_range(){
int i;
for(i=1;i<=n;++i){
int x=points[i].x,y=abs(points[i].y);
while(i<n && x==points[i+1].x){
++i;
if(y>abs(points[i].y))
y=abs(points[i].y);
}
while(!range.empty()){
auto [px,py,l,r]=range.back();
ld inters=special_inters(x,y,px,py);
if(r<=inters)
break;
if(inters<=l)
range.pop_back();
else{
range.back().r=inters;
break;
}
}
if(range.empty())
range.push_back({(ld)x,(ld)y,0,(ld)len});
else
range.push_back({(ld)x,(ld)y,range.back().r,(ld)len});
}
}
ld dist(ld x1,ld y1,ld x2,ld y2){
return sqrt((x1-x2)*(x1-x2)+(y1-y2)*(y1-y2));
}
ld solve(){
ld mxm=0;
for(auto [x,y,l,r] : range){
ld dst=dist(x,y,l,0);
if(mxm<dst)
mxm=dst;
dst=dist(x,y,r,0);
if(mxm<dst)
mxm=dst;
}
return mxm;
}
int main()
{
read();
get_range();
cout<<fixed<<setprecision(6)<<solve();
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... |