제출 #554948

#제출 시각아이디문제언어결과실행 시간메모리
554948victor_gaoMobile (BOI12_mobile)C++17
0 / 100
1099 ms32540 KiB
//#pragma GCC optimize("Ofast,unroll-loops,O3")
//#pragma GCC target("avx,avx2,sse,sse2,sse3,ssse3,sse4,popcnt,abm,mmx,fma,tune=native")
#include<bits/stdc++.h>
//#include<bits/extc++.h>
//#pragma pack(1)
#define fast ios::sync_with_stdio(0); cin.tie(0);
#define int long long
#define pii pair<int,int>
#define x first
#define y second
#define N 1000015
using namespace std;
//using namespace __gnu_pbds;
mt19937 rng(chrono::steady_clock::now().time_since_epoch().count());
//typedef tree<int, null_type,less_equal<int>, rb_tree_tag,tree_order_statistics_node_update> order_multiset;
//typedef tree<int, null_type,less<int>, rb_tree_tag,tree_order_statistics_node_update> order_set;
int n,L;
pii arr[N];
bool check(double val){
	//cout<<sqrt(val)<<" -> \n";
	double l=0,r=-1;
	for (int i=1;i<=n;i++){
		if (val-arr[i].y*arr[i].y<=0) continue;
		double dl=(double)arr[i].x-sqrt(val-arr[i].y*arr[i].y);
		double dr=(double)arr[i].x+sqrt(val-arr[i].y*arr[i].y);
		if (l<r){
			if (dl-r>0.000001){
				l=dl;
			}
			else {
				r=max(r,dr);
			}
		}
		else {
			if (r-dl>0.000001){
				r=dr;
				l=dl;
			}
		}
//		cout<<l<<" "<<r<<'\n';
	}
	if (l<=r&&r>=L){
	//	cout<<"OK\n";
		return 1;
	}
//	cout<<"NO\n";
	return 0;
}
bool cmp(pii a,pii b){
	if (a.x!=b.x) return a.x<b.x;
	else return a.y>b.y;
} 
signed main(){
	fast
//	freopen("loan.in","r",stdin);
//	freopen("loan.out","w",stdout);
	cout<<fixed<<setprecision(5);
	cin>>n>>L;
	for (int i=1;i<=n;i++) cin>>arr[i].x>>arr[i].y;
	sort(arr+1,arr+1+n,cmp);
	double l=0,r=4e18;
	while (r-l>0.0001){
		double mid=(l+r)/2.0;
	//	cout<<l<<" ~ "<<r<<'\n';
		if (check(mid)) r=mid;
		else l=mid;
	}
	cout<<(long double)(sqrt(l))<<'\n';
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...