성공의 열쇠

시간 제한3초메모리 제한256 MB

요약
기존 코인 n개에 원하는 값의 코인 m개를 추가할 때, 부분합으로 만들 수 없는 가장 작은 양의 정수를 최대화하는 문제입니다.
난이도

보통10점 중 5점

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

문제

한 방송 게임 쇼에서 우승자에게 줄 상품 세트를 준비한다. 우승자의 점수가 XX이면, 우승자는 준비된 상품들 중에서 값의 합이 정확히 XX달러가 되는 부분집합을 골라 받아야 한다.

주최 측은 이미 값이 각각 a1,a2,…,ana_1, a_2, \dots, a_n달러인 여분의 상품 nn개를 가지고 있다. 우승자의 점수를 미리 알 수 없으므로 주최 측은 상품 mm개를 추가로 구매한다. 목표는, 우승자가 받을 수 없는 가장 작은 양의 정수 점수를 최대로 만들도록 이 mm개의 상품을 고르는 것이다. 여기서 '받을 수 없는 점수'란, (이미 가진 상품과 새로 산 상품을 합친) 모든 상품의 어떤 부분집합의 합으로도 만들 수 없는 가장 작은 양의 정수를 뜻한다.

예를 들어 이미 22, 33, 99달러짜리 상품을 가지고 있고 22개를 더 살 수 있다고 하자. 11달러와 77달러짜리 상품을 사면 우승자는 11부터 2222까지 모든 점수의 상품을 받을 수 있으므로, 받을 수 없는 가장 작은 점수는 2323이 되며, 이보다 더 좋은 선택은 없다. 이렇게 얻을 수 있는 '받을 수 없는 가장 작은 점수'의 최댓값을 출력하라.

입력

첫째 줄에 정수 두 개 nn과 mm이 주어진다. nn은 주최 측이 이미 가지고 있는 상품의 수, mm은 추가로 구매할 상품의 수이다 (0≤n≤300 \le n \le 30, 1≤m≤301 \le m \le 30).

둘째 줄에는 이미 가지고 있는 상품의 값 a1,…,ana_1, \dots, a_n이 주어진다 (1≤ai≤1091 \le a_i \le 10^9). n=0n = 0이면 둘째 줄은 비어 있다.

출력

정수 하나를 출력한다. mm개의 상품을 사는 모든 방법 중에서, 우승자가 받을 수 없는 가장 작은 양의 정수 점수가 가질 수 있는 최댓값이다.

예제3

  1. 예제 1

    입력
    3 2
    2 3 9
    
    예상 출력
    23
    
  2. 예제 2

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

    입력
    5 2
    1 1 1 1 1
    
    예상 출력
    24