만드는 중입니다

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

학생과 멘토

면접 대비

메모리 제한1024 MB

요약
각 학생마다 자신의 두 배 이하인 다른 학생의 레이팅 중 가장 높은 값을 구합니다. 그런 학생이 없으면 -1을 출력합니다.
난이도

쉬움10점 중 3점

유형
정렬, 이분 탐색
정답자
아직 제출이 없습니다

문제

구글의 Kick Start, Code Jam 같은 프로그래밍 대회를 앞두고 NN명의 학생이 함께 준비한다. 서로 돕기 위해 각 학생은 다른 학생 중에서 멘토를 한 명 고른다. 멘토는 멘티가 문제를 풀고, 알고리즘을 배우고, 진도를 점검하는 등 준비 과정 전반을 돕는다.

각 학생은 다른 모든 학생 중에서 정확히 한 명의 멘토를 고르며, 한 사람이 여러 명의 멘티에게 멘토가 될 수 있다. 모든 학생 ii에게는 대회에서의 실력을 대략 나타내는 레이팅 RiR_i가 주어진다. 멘토가 멘티보다 지나치게 강해서는 안 된다고 보므로, 학생 jj는 Rj≤2×RiR_j \le 2 \times R_i일 때에만 학생 ii의 멘토가 될 수 있다. 멘토의 레이팅은 멘티와 같거나 낮아도 된다.

각 학생은 가능한 한 강한 멘토를 원한다. 각 학생에 대해 고를 수 있는 멘토 레이팅의 최댓값을 구하라.

입력

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

각 테스트 케이스의 첫 줄에는 학생의 수 NN이 주어진다.

둘째 줄에는 NN개의 정수 R1,R2,…,RNR_1, R_2, \dots, R_N이 공백으로 구분되어 주어진다. RiR_i는 ii번째 학생의 레이팅이다.

출력

각 테스트 케이스마다 Case #x: M1 M2 M3 ... MN 형식으로 한 줄을 출력한다. xx는 1부터 시작하는 테스트 케이스 번호이고, MiM_i는 ii번째 학생의 멘토가 가질 수 있는 레이팅의 최댓값이다. 조건에 맞는 멘토가 없는 학생에게는 −1-1을 출력한다.

제한

  • 1≤T≤1001 \le T \le 100.
  • 모든 ii에 대해 1≤Ri≤1061 \le R_i \le 10^6.

예제1

  1. 예제 1

    입력
    3
    3
    2000 1500 1900
    5
    1000 600 1000 2300 1800
    2
    2500 1200
    
    예상 출력
    Case #1: 1900 2000 2000
    Case #2: 1800 1000 1800 1800 2300
    Case #3: 1200 -1