퍼펙트 게임

사망하면 처음부터 다시 시작하는 규칙에서 모든 레벨을 한 번에 클리어할 때까지 걸리는 기대 시간을 최소로 만드는 순서를 구합니다.

보통7그리디확률정렬아직 제출이 없습니다시간 제한5초메모리 제한512 MB

문제

비디오 게임을 하고 있다. 모든 레벨을 한 번도 죽지 않고 연속으로 통과하면 업적을 얻는다. 레벨은 원하는 순서로 골라서 플레이할 수 있고, 한 레벨을 시도할 때마다 통과하거나 죽는다. 레벨마다 죽을 확률이 정해져 있고, 한 번 플레이하는 데 걸리는 시간도 정해져 있다. 죽는 데 걸리는 시간은 그 레벨을 통과하는 데 걸리는 시간과 같다. 죽으면 곧바로 자기가 정한 순서의 첫 레벨부터 다시 시작한다.

업적을 얻기까지 걸리는 시간의 기댓값을 최소로 만드는 플레이 순서를 구하라.

참고: 레벨을 통과하지 못해도 죽는 것은 게임 속 캐릭터뿐이다. 그렇지 않았다면 이 업적에 도전하는 사람은 거의 없었을 것이다.

입력

첫 줄에 테스트 케이스의 수 TT가 주어진다. 이어서 TT개의 테스트 케이스가 주어지며, 각 케이스는 세 줄로 이루어진다.

각 케이스의 첫 줄에는 레벨의 수 NN이 주어진다. 둘째 줄에는 공백으로 구분한 NN개의 정수 LiL_i가 주어진다. LiL_i는 레벨 ii를 한 번 플레이하는 데 걸리는 시간(초)이고, 통과하든 죽든 같다. 셋째 줄에는 공백으로 구분한 NN개의 정수 PiP_i가 주어진다. PiP_i는 레벨 ii를 한 번 시도할 때 죽을 확률을 퍼센트로 나타낸 값이다.

제한

  • 1T1001 \le T \le 100
  • 1N201 \le N \le 20
  • 1Li1001 \le L_i \le 100
  • 0Pi<1000 \le P_i < 100

출력

각 테스트 케이스마다 한 줄씩, 먼저 Case #x: 를 출력한다. xx는 1부터 시작하는 케이스 번호이다. 그 뒤에 공백으로 구분한 NN개의 정수를 출력한다. jj번째 정수는 jj번째로 시도할 레벨의 번호이며, 이 순서는 업적을 얻기까지 걸리는 시간의 기댓값을 최소로 만들어야 한다. 레벨 번호는 00부터 N1N-1까지이다.

기댓값이 같은 순서가 여러 개라면 사전순으로 가장 앞서는 순서를 출력한다. 두 순서 중에서는 처음으로 달라지는 위치의 번호가 더 작은 쪽이 사전순으로 앞선다. 여러 순서 중에서 사전순으로 가장 앞서는 순서는 나머지 모든 순서보다 사전순으로 앞서는 순서이다.