녹아웃 토너먼트

각 경기의 승리 확률이 a/(a+b)로 주어질 때, 녹아웃 토너먼트의 시작 순서를 정해 Dale이 우승할 확률이 최대가 되도록 배열하는 문제입니다.

보통7동적 계획법확률정렬아직 제출이 없습니다시간 제한2초메모리 제한512 MB

문제

로라는 녹아웃 토너먼트를 준비하고 있고, 친구 데일이 이 토너먼트에 참가한다. 로라는 경기를 유리하게 배치해서 데일이 우승할 확률을 최대로 만들고 싶다. 방법을 모르는 로라가 당신에게 도움을 청했다. 당신은 이런 부정한 일에 협조하기를 거절하려 했지만, 곧 이것이 아주 재미있는 퍼즐이라는 사실을 깨달았다.

선수 수가 2의 거듭제곱이면 토너먼트는 재귀적으로 정의된다. 선수를 명단 순서대로 같은 크기의 두 그룹으로 나누고, 각 그룹이 따로 녹아웃 토너먼트를 치른 뒤, 두 토너먼트의 우승자끼리 경기한다. 한 번 진 선수는 토너먼트에서 탈락한다.

선수 수가 2의 거듭제곱이 아니면, 출전 명단의 뒤쪽 선수 몇 명이 1라운드를 자동으로 통과해서 2라운드에 남는 선수 수가 2의 거듭제곱이 되게 한다. 1라운드에서는 명단의 앞에서부터 두 명씩 짝지어 경기하고, 1라운드 승자와 자동 통과한 선수를 명단 순서대로 나열해 2라운드부터의 토너먼트를 치른다. 그림 K.1이 그 예다.

그림 K.1: 선수가 5명인 토너먼트 트리. 선수 C, D, E는 1라운드를 자동으로 통과한다.

모든 선수에게는 실력을 나타내는 레이팅이 있다. 레이팅이 aa인 선수가 레이팅이 bb인 선수와 경기하면 a/(a+b)a/(a+b)의 확률로 이기며, 각 경기의 결과는 이전 경기의 결과와 독립이다.

주최자인 로라는 선수의 출전 명단 순서를 원하는 대로 정할 수 있다. 데일이 우승할 확률의 최댓값은 얼마인가?

입력

입력은 다음과 같이 구성된다.

  • 첫 줄에 전체 선수 수 nn (2n40962 \le n \le 4096)이 주어진다.
  • 이어지는 nn개의 줄에 각 선수의 레이팅 rr (1r1051 \le r \le 10^5)이 한 줄에 하나씩 주어진다. 첫 번째 레이팅이 데일의 레이팅이다.

출력

로라가 명단을 가장 유리하게 정했을 때 데일이 우승할 확률의 최댓값을 소수점 아래 아홉째 자리까지 반올림해서, 소수점 아래 정확히 아홉 자리로 출력한다. 예를 들어 확률이 1/81/8이면 0.125000000을 출력한다.