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

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

멘델의 유전학

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

요약
각 데이터 세트에서 n개의 크기로 만들 수 있는 모든 쌍의 ceil((x+y)/2) 값 가운데 가장 큰 n개를 내림차순으로 구한다.
난이도

보통10점 중 7점

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

문제

오스트리아의 수도사 그레고어 멘델(1822–1884)은 유전형 유전 이론을 개척하여 유전학의 창시자로 불린다. 이 문제에서는 멘델의 완두콩 교배 실험을 더 빠르게 처리하도록 돕는다.

완두콩의 여러 특성 중 크기 하나만 고려한다. 각각 크기를 가진 nn개의 초기 품종에서 시작하면, 두 품종을 짝지어 교배해 한 세대 뒤에는 n2n^2가지의 교배종을 얻는다. 멘델은 더 큰 완두콩을 얻고 싶지만 자원이 부족하여 n2n^2개의 후보 중 오직 nn개만 재배할 수 있으므로, 가장 유망한 nn개를 골라야 한다.

숨겨진 유전형을 알 수 없으므로, 크기가 xx와 yy인 두 부모로부터 나오는 교배종의 크기는 다음 식으로 추정한다.

⌈x+y2⌉\left\lceil \frac{x + y}{2} \right\rceil

예를 들어 두 부모의 크기가 55와 22이면 교배종의 크기는 ⌈7/2⌉=4\lceil 7/2 \rceil = 4로 추정한다.

n×nn \times n 조합으로 이루어진 행렬에서 가장 큰 nn개의 값을 구하여라. 한 품종을 자기 자신과 교배하는 경우, 즉 대각선 원소도 포함한다.

입력

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

  • 첫째 줄에 초기 품종의 개수 nn (1≤n≤100001 \le n \le 10000)이 주어진다.
  • 둘째 줄에 초기 품종들의 크기를 나타내는 nn개의 양의 정수가 주어진다.

출력

각 데이터 집합마다 먼저 Data Set x:를 한 줄에 출력한다. 여기서 xx는 데이터 집합의 번호(1부터 시작)이다. 다음 줄에는 n×nn \times n 조합 행렬에서 가장 큰 nn개의 수를 내림차순으로 정렬하여 공백 하나로 구분해 출력한다. 서로 이웃한 데이터 집합 사이는 빈 줄 하나로 구분한다.

예제1

  1. 예제 1

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