Колонизация

시간 제한1초메모리 제한1024 MB

요약
반지름이 주어진 원들을 모든 쌍이 외접하도록 배치하고, 세 원 사이에 들어갈 네 번째 원의 반지름을 구하는 문제이다.
난이도

어려움10점 중 8점

유형
기하, 수학, 구현
정답자
아직 제출이 없습니다

문제

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

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

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

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

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

입력

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

출력

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

예제3

  1. 예제 1

    입력
    3
    1 2 3
    
    예상 출력
    44.4465535613
    
  2. 예제 2

    입력
    4
    12 1 12 3
    
    예상 출력
    940.0432014879
    
  3. 예제 3

    입력
    3
    2 8 8
    INSERT
    
    예상 출력
    417.7969784391
    0.6666666667