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

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

눈사람 쌓기

면접 대비

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

요약
주어진 눈덩이 지름들로, 쌓기 비율 부등식을 만족하는 세 쌍의 최대 개수를 구한다.
난이도

보통10점 중 6점

유형
그리디, 정렬, 투 포인터, 이분 탐색
정답자
아직 제출이 없습니다

문제

눈사람 군대를 만들려고 합니다. 이를 위해 다양한 크기의 눈덩이를 잔뜩 모았습니다. 각 눈사람은 눈덩이 세 개를 위로 쌓아 만듭니다. 먼저 눈덩이 하나를 바닥으로 고르고, 그보다 작은 눈덩이를 가운데에, 다시 그보다 더 작은 눈덩이를 맨 위에 올립니다.

각 눈덩이에는 지름 dd가 있습니다. 어떤 눈사람에서 바닥 눈덩이의 지름을 dbd_b, 가운데 눈덩이의 지름을 dmd_m, 맨 위 눈덩이의 지름을 dtd_t라고 할 때, 다음 두 부등식이 모두 성립해야 합니다.

  • 2db≥3dm2 d_b \geq 3 d_m
  • 2dm≥3dt2 d_m \geq 3 d_t

주어진 눈덩이들로 위 조건을 만족하면서 만들 수 있는 눈사람의 최대 개수를 구하세요.

입력

첫 줄에 데이터 집합의 개수 KK가 주어집니다. 이어서 KK개의 데이터 집합이 다음 형식으로 주어집니다.

각 데이터 집합의 첫 줄에는 눈덩이의 개수 NN이 주어집니다 (3≤N≤10003 \leq N \leq 1000). 다음 줄에는 NN개의 정수가 주어지며, 각 정수는 11 이상 10001000 이하입니다. ii번째 정수는 ii번째 눈덩이의 지름입니다.

출력

각 데이터 집합마다 먼저 Data Set x:를 한 줄에 출력합니다. 여기서 xx는 데이터 집합의 번호입니다. 다음 줄에 완성할 수 있는 올바른 눈사람의 최대 개수를 출력합니다. 연속한 데이터 집합 사이에는 빈 줄을 하나 넣어 구분합니다.

예제1

  1. 예제 1

    입력
    2
    6
    3 5 1 2 6 4
    6
    3 5 1 3 6 4
    
    예상 출력
    Data Set 1:
    2
    
    Data Set 2:
    1