직선에 접하는 원 배치

주어진 N개의 원을 직선 한쪽에 서로 겹치지 않게 접하도록 배치하고, 가장 왼쪽 원과 가장 오른쪽 원의 접점 사이 거리의 최솟값을 구한다.

보통6완전 탐색기하정렬아직 제출이 없습니다시간 제한2초메모리 제한512 MB

문제

반지름이 정해진 원 NN개를 직선 하나 위에 놓으려고 한다. 모든 원은 직선의 같은 쪽에 놓이고 직선에 접해야 한다. 서로 다른 두 원의 내부는 겹칠 수 없지만, 두 원이 한 점에서 맞닿는 것은 괜찮다.

원을 이렇게 놓으면 원마다 직선과 만나는 점이 하나씩 생긴다. 가장 왼쪽 원이 직선과 만나는 점과 가장 오른쪽 원이 직선과 만나는 점 사이의 거리가 가장 작아지도록 놓았을 때, 그 거리를 구하는 프로그램을 작성하시오.

입력

첫째 줄에 원의 개수 NN이 주어진다. (2N82 \le N \le 8)

둘째 줄에 원 NN개의 반지름이 공백으로 구분되어 주어진다. 반지름은 1 이상 1,000,000,000 이하의 자연수이다.

출력

첫째 줄에 거리의 최솟값을 소수점 아래 일곱째 자리에서 반올림해 출력한다. 소수점 아래는 항상 여섯 자리를 채워 쓴다. 예를 들어 값이 정확히 28이면 28.000000을 출력한다.