만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

퍼펙트 게임

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

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

보통10점 중 7점

유형
그리디, 확률, 정렬
정답자
아직 제출이 없습니다

문제

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

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

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

입력

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

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

제한

  • 1≤T≤1001 \le T \le 100
  • 1≤N≤201 \le N \le 20
  • 1≤Li≤1001 \le L_i \le 100
  • 0≤Pi<1000 \le P_i < 100

출력

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

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

예제5

  1. 예제 1

    입력
    3
    4
    1 1 1 1
    50 0 20 20
    3
    100 10 1
    0 50 0
    3
    100 80 50
    40 20 80
    
    
    예상 출력
    Case #1: 0 2 3 1
    Case #2: 1 0 2
    Case #3: 2 0 1
    
  2. 예제 2

    입력
    1
    1
    1
    0
    
    예상 출력
    Case #1: 0
    
  3. 예제 3

    입력
    1
    5
    7 3 9 1 5
    0 0 0 0 0
    
    예상 출력
    Case #1: 0 1 2 3 4
    
  4. 예제 4

    입력
    1
    6
    1 2 3 4 5 6
    10 20 30 40 50 60
    
    예상 출력
    Case #1: 0 1 2 3 4 5
    
  5. 예제 5

    입력
    1
    5
    1 1 1 1 1
    10 20 30 40 50
    
    예상 출력
    Case #1: 4 3 2 1 0