#include<bits/stdc++.h>
using namespace std;
using dd = long double;
struct trans {
dd x , y , change;
};
dd change(dd x1, dd y1, dd x2, dd y2) {
dd up = x2 * x2 + y2 * y2 - x1 * x1 - y1 * y1;
dd down = 2 * (x2 - x1);
return dd(up / down);
}
int main() {
int n;
dd l;
cin >> n >> l;
stack<trans>s;
dd x ,y;
cin >> x >> y;
dd maxdist = (sqrt(x * x + y * y));
s.push({x , y});
for(int i = 1 ;i < n ;i++) {
cin >> x >> y;
dd xchange = 0;
while(!s.empty()) {
dd x2 = s.top().x;
dd y2 = s.top().y;
xchange = change(x , y , x2 ,y2);
maxdist = max(maxdist, sqrt((x - xchange) * (x - xchange) + y * y));
if(xchange < s.top().change) {
s.pop();
}
else {
break;
}
}
s.push({x , y , xchange});
}
while(s.top().change > l) {
s.pop();
}
x = s.top().x;
y = s.top().y;
maxdist = max(maxdist, sqrt((x - l) * (x - l) + y * y));
printf("%.6Lf\n", maxdist);
}
# | 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... |