Problem:
Score : 600 points

Problem Statement

Given are N points (x_i, y_i) in a two-dimensional plane.

Find the minimum radius of a circle such that all the points are inside or on it.

Constraints

2 \leq N \leq 50

0 \leq x_i \leq 1000

0 \leq y_i \leq 1000

The given N points are all different.

The values in input are all integers.

Input

Input is given from Standard Input in the following format:

N
x_1 y_1
:
x_N y_N

Output

Print the minimum radius of a circle such that all the N points are inside or on it.

Your output will be considered correct if the absolute or relative error from our answer is at most 10^{-6}.

Sample Input 1

2
0 0
1 0

Sample Output 1

0.500000000000000000

Both points are contained in the circle centered at (0.5,0) with a radius of 0.5.

Sample Input 2

3
0 0
0 1
1 0

Sample Output 2

0.707106781186497524

Sample Input 3

10
10 9
5 9
2 0
0 0
2 7
3 3
2 5
10 0
3 7
1 9

Sample Output 3

6.726812023536805158

If the absolute or relative error from our answer is at most 10^{-6}, the output will be considered correct.

Solution in C++14 (GCC 5.4.1) (judge verdict: Wrong Answer)

#include <bits/stdc++.h>

using namespace std;

int main(void)
{
	cin.tie(0);
	ios::sync_with_stdio(false);

	int n,x,y;
	vector <pair<int,int>> v;

	cin >> n;

	for(int i=0;i<n;i++)
	{
		cin >> x >> y;
		v.push_back(make_pair(x,y));
	}

	long double res = 1e18;

	for(int i=0;i<n;i++)
	{
		for(int j=i+1;j<n;j++)
		{
			long double mx = (v[i].first + v[j].first)/(2.0);
			long double my = (v[i].second + v[j].second)/(2.0);
			long double r = 0;
			for(int k=0;k<n;k++)
			{
				long double dx = abs(mx - v[k].first);
				long double dy = abs(my - v[k].second);
				long double d = sqrt(dx*dx + dy*dy);
				r = max(r,d);
			}
			res = min(res,r);
		}
	}
	cout << fixed;
	cout.precision(18);

	cout << res << '\n';

	return 0;
}