Submission #832562

#TimeUsernameProblemLanguageResultExecution timeMemory
832562LalicMobile (BOI12_mobile)C++17
100 / 100
588 ms35324 KiB
#include <bits/stdc++.h>
using namespace std;
 
#define fi first
#define se second
#define pb push_back
#define all(x) x.begin(), x.end()
 
typedef long long ll;
typedef pair<int, int> pii;
typedef pair<ll, ll> pll;
mt19937_64 rng(chrono::steady_clock::now().time_since_epoch().count());
 
const int INF = 0x3f3f3f3f;
const ll LINF = 0x3f3f3f3f3f3f3f3f;
const ll MOD = 1e9+7;
const int MAXN = 2e5+5;
 
void solve(){
	int n; double l; cin >> n >> l;
	vector<pair<double, double>> arr(n);
	for(int i=0;i<n;i++) cin >> arr[i].fi >> arr[i].se;

	double lo=0, hi=1e10;
	while(hi-lo>=0.0001){
		double mid=lo+(hi-lo)/2;

		double lim=0;
		for(int i=0;i<n;i++){
			double dist=sqrt(mid*mid-arr[i].se*arr[i].se);
			if(arr[i].fi-dist<=lim) lim=max(lim, arr[i].fi+dist);
		}

		if(lim>=l) hi=mid;
		else lo=mid;
	}

	cout.precision(3);
	cout.setf(ios::fixed);

	cout << lo << "\n";
}
 
int main(){
	ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL);
 
	// freopen("loan.in","r",stdin);
    // freopen("loan.out","w",stdout);
 
	int tt=1;
	// cin >> tt;
	while(tt--) solve();
	return 0;
}
#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...