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 PyPy3 (2.4.0) (judge verdict: Wrong Answer)

n = int(input())
p = []

for _ in range(n):
    x,y = map(int, input().split())
    p.append([x,y])

import math
import itertools

if n == 2:
    print(math.sqrt((p[0][0]-p[1][0])**2 + (p[0][1]-p[1][1])**2)/2)
    exit()

def rad(v):
    p1 = v[0]
    p2 = v[1]
    p3 = v[2]
    a = p1[0]
    b = p1[1]
    c = p2[0]
    d = p2[1]
    e = p3[0]
    f = p3[1]
    py = (e-a)*(a**2+b**2-c**2-d**2) - (c-a)*(a**2+b**2-e**2-f**2)
    
    if (2*(e-a)*(b-d)-2*(c-a)*(b-f)) == 0:
        return None
    py = py / (2*(e-a)*(b-d)-2*(c-a)*(b-f))

    if c-a != 0:
        px = 2*(b-d)*py - a**2 -b**2+c**2+d**2
        px = px / (2*(c-a))
    else:
        px = 2*(b-f)*py - a**2 - b**2 + c**2 + d**2
        px = px / (2*(e-a))
    return [px,py,math.sqrt((a-px)**2+(b-px)**2)]

ans = 10**13

for v in itertools.combinations(p,2):
    p1 = v[0]
    p2 = v[1]
    px = (p1[0]+p2[0])/2
    py = (p1[1]+p2[1])/2
    rr = math.sqrt((p1[0]-p2[0])**2+(p1[1]-p2[1])**2)/2
    cnt = 0
    for i in range(n):
        if math.sqrt((p[i][0]-px)**2+(p[i][1]-py)**2) <= rr + 10**(-6):
            cnt += 1
    if cnt == n:
        ans = min(ans,rr)

for v in itertools.combinations(p,3):
    d = rad(v)
    if d == None:
        continue
    cnt = 0
    for i in range(n):
        if math.sqrt((p[i][0]-d[0])**2+(p[i][1]-d[1])**2) <= d[2]+10**(-6):
            cnt += 1
    if cnt == n:
        ans = min(ans,d[2])

print(ans)