Problem:


  MathJax.Hub.Config({ tex2jax: { inlineMath: [["$","$"], ["\\(","\\)"]], processEscapes: true }});

Problem E:
HullMarathon

  うさぎはフルマラソンという競技が好きである. この競技はチームで行う. チームメンバーは競技開始前に原点に集まる. 競技開始と同時に走り出し, 1 分後に立ち止まる．このとき，チームメンバーの位置の凸包の面積が最も大きなチームが勝ちとなる.

  あなたは $N$ 匹のうさぎからなるチームの監督である. $i$ 匹目のうさぎは 1 分で $r_i$ 移動することができる. このチームが最適な戦略をとった場合の, 1 分後の凸包の面積の最大値を求めよ.

Constraints

$N$ will be between 3 and 8, inclusive.

$r_i$ will be an integer between 1 and 1,000, inclusive.

Input

  入力は以下の形式で与えられる:

  

$N$

$r_1$

...

$r_N$

Output

凸包の面積の最大値を表す実数を 1 行に出力せよ. 小数点以下何桁出力してもよいが, 絶対誤差または相対誤差が $10^{-6}$ 以下のとき Accepted になる.

Sample Input 1

4
5
8
58
85

Sample Output 1

2970.000000000

Sample Input 2

6
1
1
1
1
1
1

Sample Output 2

2.598076211


Sample input:
4
5
8
58
85


Sample output:
2970.000000000

Submission status: Accepted

Solution code:
from itertools import permutations
from math import acos, sin, cos, pi
import sys
readline = sys.stdin.readline
write = sys.stdout.write
def solve():
    N = int(readline())
    R = [int(readline()) for i in range(N)]
    R.sort(reverse=1)

    ans = 0
    for l in range(3, N+1):
        for rs in permutations(R[:l]):
            C = [rs[i]*rs[i-l+1] for i in range(l)]
            if C.index(min(C)) != 0:
                continue

            left = 0; right = pi+1e-9
            while right - left > 1e-9:
                mid = (left + right) / 2
                s = mid
                cv = cos(mid)
                for i in range(1, l):
                    s += acos(C[0]*cv/C[i])
                if s > 2*pi:
                    right = mid
                else:
                    left = mid
            if left < 1e-9:
                continue
            res = C[0]*sin(left)
            cv = cos(left)
            v2 = (C[0]*cos(left))**2
            for i in range(1, l):
                res += (C[i]**2 - v2)**.5
            ans = max(ans, res)
    ans /= 2
    write("%.16f\n" % ans)
solve()

Submission status: Runtime Error

Solution code:
p 0