2n개의 팀이 참가하는 싱글 엘리미네이션(단판 토너먼트) 축구 대회를 생각하자. 팀에는 1,2,…,2n번의 번호가 매겨져 있다. 각 라운드에서는 아직 탈락하지 않은 모든 팀을 번호가 커지는 순서로 나열한 뒤, 첫 번째 팀과 두 번째 팀이, 세 번째 팀과 네 번째 팀이, 이런 식으로 맞붙는다. 각 경기의 승자는 다음 라운드로 진출하고 패자는 탈락한다. n번의 라운드가 끝나면 한 번도 지지 않은 팀 하나만 남으며, 그 팀이 우승한다.
행렬 P=[pij]가 주어진다. 여기서 pij는 한 경기에서 팀 i가 팀 j를 이길 확률이다. 우승할 확률이 가장 높은 팀을 구하여라.
입력은 여러 개의 테스트 케이스로 이루어진다. 각 테스트 케이스는 정수 n (1≤n≤7) 하나가 적힌 줄로 시작한다. 이어지는 2n개의 줄에는 각각 2n개의 실수가 주어지며, i번째 줄의 j번째 값이 pij이다. 이 행렬은 모든 i=j에 대해 pij=1.0−pji를, 모든 i에 대해 pii=0.0을 만족한다. −1 하나만 적힌 줄이 입력의 끝을 나타낸다.
행렬의 각 값은 부동소수점 수이므로, 반올림 오차를 피하려면 double(배정밀도)을 사용하는 것이 좋다.
각 테스트 케이스마다 우승할 확률이 가장 높은 팀의 번호를 한 줄에 출력한다. 우승 확률이 가장 높은 두 팀의 확률 차이는 항상 0.01 이상임이 보장된다.
n=2인 네 팀 예제(첫 번째 테스트 케이스의 행렬)를 생각해 보자. 첫 라운드에서 팀 1과 팀 2가, 팀 3과 팀 4가 맞붙고, 두 승자가 결승에서 만난다. 팀 2가 우승할 확률은 다음과 같다.
p21p34p23+p21p43p24=0.9⋅0.6⋅0.4+0.9⋅0.4⋅0.5=0.396.
그다음으로 우승 가능성이 높은 팀은 팀 3이며, 그 확률은 0.372이다.