아직 만들고 있는 페이지입니다.

이 페이지는 아직 만드는 중입니다. 보이는 내용은 바뀔 수 있습니다.

보물인가 폭탄인가

시간 제한8초메모리 제한512 MB

요약
각 열쇠를 서로 다른 열쇠 구멍에 하나씩 넣어 (1 - p_ij)의 곱을 최대로 만드는 배정을 찾고, 구멍마다 넣을 열쇠 번호를 출력한다. N은 100 이하이고 테스트 케이스가 여러 개다.
난이도

어려움10점 중 8점

유형
동적 계획법, 수학, 행렬, 구현
정답자
아직 제출이 없습니다

문제

전설의 보물을 찾아 나선 모험가가 깊은 동굴에서 신비한 문을 발견했다. 문에는 열쇠 구멍이 여러 개 있고, 그 옆에는 구멍과 같은 수의 열쇠가 놓여 있었다. 열쇠 구멍에는 1번부터 N번까지 번호가 붙어 있었고, 열쇠에도 마찬가지로 번호가 붙어 있었다.

그가 가진 보물 지도에 따르면, 모든 열쇠를 동시에 열쇠 구멍에 꽂으면 문이 열리고 보물방으로 이어진다고 한다. 열쇠는 아무 구멍에나 꽂을 수 있으니 쉬운 일처럼 보였지만, 문에는 큰 함정이 하나 있었다. 열쇠를 구멍에 꽂을 때마다 문에 설치된 폭탄이 어떤 확률로 폭발할 수 있었다.

친절한 보물 지도에는 모든 pijp_{ij}(i번째 열쇠 구멍에 j번째 열쇠를 꽂았을 때 폭발할 확률)가 적혀 있었다. 신중하지만 욕심 많은 모험가는 안전을 최대화하는 방식, 즉 폭발하지 않을 확률이 최대가 되도록 열쇠를 꽂기로 했다. 열쇠와 구멍이 두 개이고 p11=0.4p_{11} = 0.4, p12=0.5p_{12} = 0.5, p21=0.5p_{21} = 0.5, p22=0.6p_{22} = 0.6인 상황을 생각해 보자. 첫 번째 열쇠를 첫 번째 구멍에, 두 번째 열쇠를 두 번째 구멍에 꽂으면 폭발하지 않을 확률은 (1−0.4)×(1−0.6)=0.24(1 - 0.4) \times (1 - 0.6) = 0.24이다. 반대로 두 번째 열쇠를 첫 번째 구멍에, 첫 번째 열쇠를 두 번째 구멍에 꽂으면 확률은 0.25로 더 낫다.

여러분은 열쇠를 꽂는 최선의 방법을 찾아야 한다. 답은 유일하다고 가정해도 된다. 폭발하지 않을 최대 확률은 최적이 아닌 어떤 열쇠 배치의 확률보다 엄격하게 1.00001배 이상 크다.

입력

이 문제의 입력은 여러 테스트 케이스로 이루어진다. 각 테스트 케이스의 첫 줄에는 열쇠와 열쇠 구멍의 개수 N (1 ≤ N ≤ 100)이 주어진다. 이어지는 N개의 줄에서 i번째 줄에는 N개의 실수 pi1,…,piNp_{i1}, \ldots, p_{iN} (0.00001 ≤ pijp_{ij} ≤ 0.99999)이 주어진다. pijp_{ij}는 i번째 열쇠 구멍에 j번째 열쇠를 꽂았을 때 폭발할 확률이다. 실수는 소수점 이하 자릿수가 최대 다섯 자리인 십진수로 주어진다.

입력은 0 하나만 있는 줄로 끝난다.

출력

각 테스트 케이스마다 N개의 줄을 출력한다. 각 테스트 케이스에서 i번째 줄에는 i번째 열쇠 구멍에 꽂아야 할 열쇠의 번호 하나만 정수로 출력한다. 서로 다른 테스트 케이스의 출력은 빈 줄 하나로 구분한다.

예제1

  1. 예제 1

    입력
    3
    0.8 0.9 0.1
    0.1 0.4 0.5
    0.6 0.1 0.7
    2
    0.4 0.5
    0.5 0.6
    0
    
    예상 출력
    3
    1
    2
    
    2
    1