썩은 밧줄

면접 대비

시간 제한1초메모리 제한128 MB

요약
밧줄 n개의 절단 하중이 주어질 때, 선택한 부분집합의 어떤 밧줄도 끊어지지 않으면서 들어 올릴 수 있는 물체의 최대 무게를 구한다.
난이도

보통10점 중 4점

유형
그리디, 정렬, 수학, 배열
정답자
아직 제출이 없습니다

문제

길이가 같은 밧줄 nn개가 있고, 이 밧줄들로 무거운 물체를 들어 올리려고 한다. 각 밧줄에는 끊어짐 하중(tear-off weight) tt가 정해져 있다. 즉, 어떤 밧줄 하나만으로 무게가 tt보다 무거운 물체를 들어 올리려 하면 그 밧줄은 끊어진다. 하지만 여러 밧줄을 물체에 병렬로 묶어 함께 들어 올릴 수 있다. 무게가 ww인 물체를 밧줄 kk개로 들어 올릴 때, 각 밧줄은 자신의 끊어짐 하중과 관계없이 w/kw/k만큼의 무게를 감당한다고 가정한다. 끊어짐 하중이 tt인 어떤 밧줄에 대해 w/k>tw/k > t이면 그 밧줄은 끊어진다.

예를 들어 끊어짐 하중이 각각 11, 1010, 1515인 밧줄 세 개를 모두 한 물체에 묶으면, 가장 약한 밧줄이 끊어지지 않는 한 무게가 33을 넘는 물체는 들 수 없다. 반면 두 번째 밧줄 하나만으로는 무게가 최대 1010인 물체를 들 수 있다.

nn개 밧줄의 끊어짐 하중이 주어질 때, 밧줄 중 일부(부분집합)를 골라 함께 묶어서 어느 밧줄도 끊어지지 않게 들어 올릴 수 있는 가장 무거운 물체의 무게를 구하여라.

입력

첫 줄에 테스트 케이스의 수 tt (1≤t≤101 \le t \le 10)가 주어지고, 이어서 각 테스트 케이스의 입력이 주어진다. 각 테스트 케이스의 첫 줄에는 밧줄의 개수 nn (1≤n≤10001 \le n \le 1000)이 주어진다. 그 다음 줄에는 밧줄들의 끊어짐 하중을 나타내는 nn개의 정수가 공백으로 구분되어 주어지며, 각 값은 11 이상 1000010000 이하이다.

출력

각 테스트 케이스마다, 어느 밧줄도 끊어지지 않고 들어 올릴 수 있는 가장 무거운 물체의 무게를 한 줄에 하나씩 출력한다.

예제4

  1. 예제 1

    입력
    2
    3
    10 1 15
    2
    10 15
    
    예상 출력
    20
    20
    
  2. 예제 2

    입력
    1
    1
    5
    
    예상 출력
    5
    
  3. 예제 3

    입력
    1
    5
    10 10 10 10 10
    
    예상 출력
    50
    
  4. 예제 4

    입력
    1
    5
    1 2 3 4 5
    
    예상 출력
    9