#include <bits/stdc++.h>
using namespace std;
long long int N; long double L;
vector<pair<long double, long double>> poles;
bool check(int distancee3){
long double distance = ((long double) distancee3)/1000;
map<long double, long long int> relevant_points;
for (pair<long double, long double> pole: poles){
if (pole.second > distance){
return true;
}
long double r = sqrt(pow(distance, 2) - pow(pole.second, 2));
long double left = pole.first - r;
long double right = pole.first + r;
if (left < 0){
left = 0;
}
if (right < 0){
right = 0;
}
if (left < L){
if (relevant_points.find(left) != relevant_points.end()){
relevant_points[left]++;
} else {
relevant_points[left] = 1;
}
}
if (right < L){
if (relevant_points.find(right) != relevant_points.end()){
relevant_points[right]--;
} else {
relevant_points[right] = -1;
}
}
}
long long int intervals_on = 0;
if ((*relevant_points.begin()).first != 0){
return true;
}
for (auto point: relevant_points){
intervals_on += point.second;
if (intervals_on <= 0){
return true;
}
}
return false;
}
long long int binary_search_max(long long int high, long long int low){
while (low < high){
long long int mid = low + (high - low + 1)/2;
if(check(mid)){
low = mid;
} else{
high = mid - 1;
}
}
return low;
}
int main(){
int T; cin >> T;
for (int t = 0; t < T; t++ ){
cin >> N >> L;
long long int maxd = 0;
for (long long int i = 0; i < N; i++ ){
long double x, y; cin >> x >> y;
poles.push_back({x, y});
maxd = max(maxd, (long long int) (max(sqrt(pow(y, 2) + pow(L - x, 2)), sqrt(pow(y, 2) + pow(x, 2))))*1000);
}
cout << ((long double) binary_search_max(maxd, 0))/1000 << endl;
}
}
# | 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... |