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

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

최대화된 부분집합

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

요약
주어진 수들에서 k개를 골라 부분합으로 1부터 연속으로 만들 수 있는 가장 큰 x를 구합니다.
난이도

보통10점 중 7점

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

문제

원소가 중복될 수 있는 집합, 즉 다중집합(multiset) AA에 대하여 함수 f(A)f(A)를 다음과 같이 정의한다. 11부터 xx까지의 모든 정수를 각각 AA의 어떤 부분다중집합(원소를 원래 등장한 개수만큼만 사용하는 부분집합)의 원소 합으로 표현할 수 있지만, x+1x + 1은 그러한 합으로 표현할 수 없는 가장 큰 정수 xx가 바로 f(A)f(A)의 값이다.

nn개의 원소로 이루어진 다중집합 AA가 주어진다. f(B)f(B)가 최대가 되도록 원소 kk개를 골라 부분다중집합 BB를 만들 때, 그 최댓값 f(B)f(B)를 구하여라.

입력

첫째 줄에 데이터 집합의 개수를 나타내는 정수 tt (1≤t≤1001 \le t \le 100)가 주어진다. 각 데이터 집합은 두 줄로 이루어진다. 첫째 줄에는 두 정수 nn과 kk (1≤k≤n≤1051 \le k \le n \le 10^5)가 주어진다. 둘째 줄에는 AA의 원소를 나타내는 nn개의 정수 a1,a2,…,ana_1, a_2, \dots, a_n (1≤ai≤1091 \le a_i \le 10^9)이 공백 하나로 구분되어 주어진다.

모든 데이터 집합에 대한 nn의 합은 10610^6을 넘지 않는다.

출력

각 데이터 집합마다 f(B)f(B)의 최댓값을 한 줄에 하나씩 정수로 출력한다.

예제4

  1. 예제 1

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

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

    입력
    1
    3 2
    2 3 4
    
    예상 출력
    0
    
  4. 예제 4

    입력
    1
    5 5
    1 2 4 8 16
    
    예상 출력
    31