제출 #1098730

#제출 시각아이디문제언어결과실행 시간메모리
1098730sanoMobile (BOI12_mobile)C++14
95 / 100
1027 ms35476 KiB
#include<iostream>
#include<vector>
#include<queue>
#include<deque>
#include<string>
#include<fstream>
#include<algorithm>
#include <iomanip>
#include<map>
#include <set>
#include <unordered_map>
#include <stack>
#include <unordered_set>
#include <cmath>
#define ll long long
#define For(i, n) for(int i = 0; i < (int)n; i++)
#define ffor(i, a, n) for(int i = (int)a; i < (int)n; i++)
#define rfor(i, n) for(int i = (int)n; i >= (int)0; i--)
#define rffor(i, a, n) for(int i = (int)n; i >= (int)a; i--)
#define vec vector
#define ff first
#define ss second
#define pb push_back
#define shit short int
#define pii pair<double, double>
#define NEK 2147483640
#define mod 1000000007
#define mod2 1000000009
#define rsz resize 
#define prv1 43
#define prv2 47
#define D 8

using namespace std;

int main() {
	double n, asd;
	cin >> n >> asd;
	vec<pii> p;
	For(i, n) {
		double x, y;
		cin >> x >> y;
		x *= 10000; y *= 10000;
		if (p.size() > 0) {
			if (x == p.back().ff && y > 0 && p.back().ss > 0) continue;
			if (x == p.back().ff && y < 0) p.pop_back();
		}
		p.push_back({ x, y });
	}
	ll l = 0;
	ll r = 14142135700000;
	asd *= 10000;
	while (l < r) {
		double mid = (l + r) / 2;
		double k = 0;
		For(i, p.size()) {
			double jeden = mid * mid;
			double dva = p[i].second * p[i].second;
			double tri = jeden - dva;
			double d = sqrt(tri);
			double s = p[i].ff - d;
			double e = p[i].ff + d;
			if (s > k) continue;
			k = max(k, e);
		}
		if (k >= asd) r = mid;
		else l = mid + 1;
	}
	cout << fixed << setprecision(4);
	long double l2 = l;
	l2 /= 10000;
	cout << l2 << '\n';
	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...