Submission #1280656

#TimeUsernameProblemLanguageResultExecution timeMemory
1280656goldenbullMobile (BOI12_mobile)C++17
0 / 100
485 ms16088 KiB
#include <bits/stdc++.h>
#define TIME (1.0 * clock() / CLOCKS_PER_SEC)
#define FOR(i,a,b) for (int i=(a),_b=(b); i<=_b; i++)
#define FOD(i,a,b) for (int i=(a),_b=(b); i>=_b; i--)
#define FUL(n) (((1LL)<<(n))-1)
#define BIT(n,k) (((n)>>(k))&1)
#define fi first
#define se second
#define pb push_back
#define all(x) (x).begin(), (x).end()
#define sz(x) ((int)(x).size())
#define sqr(x) (1LL * (x) * (x))
using namespace std;
using ll = long long;
using ull = uint64_t;
using ld = long double;
template<class T> using ve = vector<T>;
using vi = vector<int>;
using vll = vector<ll>;
using ii = pair<int,int>;
using pll = pair<ll,ll>;
using pld = pair<ld,ld>;

const char el = '\n';
template<class T> void print(T a[], int n) { FOR(i,0,n-1) cerr << a[i] << ' '; cerr << el; }
template<class T, class U> bool maxi(T& x, const U& y) { return y>x?(x=y,1):0; }
template<class T, class U> bool mini(T& x, const U& y) { return y<x?(x=y,1):0; }

const int maxn = 1e6+7;
const ld eps = 1e-4;

int n;
ll L;
pll pt[maxn];

bool ok(ld x) {
	ld cur = 0;
	FOR(i,1,n) if (pt[i].se <= x) {
		ld s = sqrt(abs(x*x - 1.0*sqr(pt[i].se)));
		ld l = pt[i].fi - s, r = pt[i].fi + s;
		if (l < cur) maxi(cur, r);
	}
	return cur >= L;
}

void solve() {
	cin>>n>>L;
	FOR(i,1,n) cin>>pt[i].fi>>pt[i].se;

	ld l = 0, r = 1e9+7;
	while (abs(l-r) > eps) {
		ld mid = (l+r)/2;
		if (ok(mid)) r = mid;
		else l = mid;
	}
	cout << fixed << setprecision(6);
	cout << l;
}

#define IN ".inp"
#define OUT ".out"
//#define NAME "test"
signed main() {
	ios_base::sync_with_stdio(false); cin.tie(nullptr);
	#ifndef NAME
		if (fopen("test.inp", "r")) freopen("test.inp", "r", stdin);
	#endif
	#ifdef NAME
		freopen(NAME IN, "r", stdin);
		freopen(NAME OUT, "w", stdout);
	#endif

	int tt=1;
//	cin>>tt;
	while (tt--) solve();

	cerr << el << "Time elapsed: " << TIME << " s";
	return 0;
}

Compilation message (stderr)

mobile.cpp: In function 'int main()':
mobile.cpp:66:52: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   66 |                 if (fopen("test.inp", "r")) freopen("test.inp", "r", stdin);
      |                                             ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~
#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...