Submission #115048

#TimeUsernameProblemLanguageResultExecution timeMemory
115048luciocfMobile (BOI12_mobile)C++14
0 / 100
1077 ms672 KiB
#include <bits/stdc++.h>

#define x first
#define y second

using namespace std;

typedef double dd;

typedef pair<dd, dd> pt;

const int maxn = 5e3+10;
const double inf = 2e18+10;
const double eps = 1e-9;

int n;
dd L;

pt p[maxn];

dd dist(pt a, pt b)
{
	dd d1 = a.x-b.x;
	dd d2 = a.y-b.y;

	return sqrt(d1*d1 + d2*d2);
}

bool ok(dd X, int ind)
{
	dd ans = inf;
	for (int i = 1; i <= n; i++)
		ans = min(ans, dist({X, 0.00}, p[i]));

	if (fabs(ans-dist({X, 0.00}, p[ind])) < eps) return true;
	return false;
}

dd busca_right(int ind)
{
	dd ini = p[ind].x, fim = L, ans = -1.00;

	for (int i = 1; i <= 64; i++)
	{
		dd mid = (ini+fim)/2.00;

		if (ok(mid, ind)) ans = mid, ini = mid;
		else fim = mid;
	}

	return ans;
}

dd busca_left(int ind)
{
	dd ini = 0.00, fim = p[ind].x, ans = -1.00;

	for (int i = 1; i <= 64; i++)
	{
		dd mid = (ini+fim)/2.00;

		if (ok(mid, ind)) ans = mid, fim = mid;
		else ini = mid;
	}

	return ans;
}

int main(void)
{
	scanf("%d %lf", &n, &L);

	for (int i = 1; i <= n; i++)
		scanf("%lf %lf", &p[i].x, &p[i].y);

	dd ans = 0.00;

	for (int i = 1; i <= n; i++)
	{
		dd posR = busca_right(i);
		dd posL = busca_left(i);

		if (posR != -1)
			ans = max(ans, dist({posR, 0.00}, p[i]));

		if (posL != -1)
			ans = max(ans, dist({posL, 0.00}, p[i]));
	}

	printf("%.6lf\n", ans);
}

Compilation message (stderr)

mobile.cpp: In function 'int main()':
mobile.cpp:71:7: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
  scanf("%d %lf", &n, &L);
  ~~~~~^~~~~~~~~~~~~~~~~~
mobile.cpp:74:8: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
   scanf("%lf %lf", &p[i].x, &p[i].y);
   ~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#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...