Колонизация | 프로그래밍의 벗 PivotOJ
PivotOJ

Колонизация

시간 제한: 1000ms메모리 제한: 1024MB출처: MOOI 2013-14 qualBOJ 30848
이 문제는 본문 이미지 일부가 표시되지 않습니다. 텍스트만으로 풀이가 어려울 수 있습니다.

문제

Давным-давно в далекой, далекой галактике на одной очень отдаленной планете стало слишком много людей, и они решили начать колонизацию. Не долго думая, они выбрали своей первой жертвой самый ближайший для них спутник — Луну.

На Луну на огромных шаттлах завезли N автономных модулей, чтобы поселить в них людей. Каждый модуль представляет собой купол из бионического стекла, имеющий форму круга радиуса Ri. Но вдруг оказалось, что эти модули не совсем автономные: пришлось соединить их переходами, причем переходы можно построить только в случае, если купола стоят вплотную друг к другу (т.е. ограничивающие их окружности касаются внешним образом).

Итак, нашим космонавтам требуется построить лунную базу, то есть расставить модули так, чтобы между любыми двумя куполами был переход, и вычислить площадь получившейся базы. Но важно заметить, что площадью базы считается не только площадь под самими модулями, но и та область, в которую нельзя попасть, не проходя через купол.

Это заселение продолжалось многие годы, и затем, как и на старой планете, на Луне стало слишком мало места, поэтому люди решили достраивать базы. Они придумали в базу из трёх модулей добавлять четвёртый, если он достаточно мал, чтобы уместиться между тремя другими куполами. И естественно им необходимо построить новые переходы, для этого новый модуль должен стоять вплотную к трём другим. Но нужно знать радиус этого четвертого купола, чтобы потом построить его на специальной М-фабрике.

[이미지 1]

На рисунке окружностями схематично показаны модули, серым обозначена площадь базы, синими черточками — переходы между модулями, красным — искомый новый модуль для достройки.

입력

В первой строке входных данных содержится число N — количество куполов (1 ⩽ N ⩽ 1000). В следующей строке содержатся N целых чисел — радиусы куполов (каждый радиус является натуральным числом и не превосходит 1000). В случае N = 3 в последней строке может также содержаться слово «INSERT».

출력

В случае, если построить базу требуемым образом невозможно, выведите −1. В противном случае выведите искомую площадь. В случае, если N = 3 и в последней строке содержалось слово «INSERT», то в следующей строке необходимо вывести искомый радиус четвертого купола. Ваш ответ будет считаться верным, если его абсолютная или относительная погрешность не будет превосходить 10−6.

예제

예제 1

입력
3
1 2 3
출력
44.4465535613

예제 2

입력
4
12 1 12 3
출력
940.0432014879

예제 3

입력
3
2 8 8
INSERT
출력
417.7969784391
0.6666666667
코드를 제출하려면 로그인하세요.