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