蜜汁挂分球跳
查看原帖
蜜汁挂分球跳
669053
Strelizia_楼主2025/8/5 13:29
#include<bits/stdc++.h>
using namespace std;
const int N=1e6+10;
const double EPS=1e-4;
int x[N],y[N];
int n,lim;
bool check(double mid){
	double last=0; 
	for(int i=1;i<=n;i++){
//		if(mid*mid<y[i]*y[i]) ;
		double x1=x[i]-sqrt(mid*mid-y[i]*y[i]);
		double x2=x[i]+sqrt(mid*mid-y[i]*y[i]);
		if(x1<= last && x2>=last) last=x2;
	}
	return last<lim;
}
int main(){
	cin>>n>>lim;
	for(int i=1;i<=n;i++){
		scanf("%d%d",&x[i],&y[i]);
	}
	double l=0,r=2e9;
	while(r-l>EPS){
		double mid=l+(r-l)/2;
		if(check(mid)){
			l=mid;
		}else{
			r=mid;
		}
	}
	cout<<fixed<<setprecision(4)<<r<<"\n";
	return 0;
}
2025/8/5 13:29
加载中...