시간 제한
메모리 제한
시간 제한
3초
메모리 제한
256 MB
한 방송 게임 쇼에서 우승자에게 줄 상품 세트를 준비한다. 우승자의 점수가 X이면, 우승자는 준비된 상품들 중에서 값의 합이 정확히 X달러가 되는 부분집합을 골라 받아야 한다.
주최 측은 이미 값이 각각 a1,a2,…,an달러인 여분의 상품 n개를 가지고 있다. 우승자의 점수를 미리 알 수 없으므로 주최 측은 상품 m개를 추가로 구매한다. 목표는, 우승자가 받을 수 없는 가장 작은 양의 정수 점수를 최대로 만들도록 이 m개의 상품을 고르는 것이다. 여기서 '받을 수 없는 점수'란, (이미 가진 상품과 새로 산 상품을 합친) 모든 상품의 어떤 부분집합의 합으로도 만들 수 없는 가장 작은 양의 정수를 뜻한다.
예를 들어 이미 2, 3, 9달러짜리 상품을 가지고 있고 2개를 더 살 수 있다고 하자. 1달러와 7달러짜리 상품을 사면 우승자는 1부터 22까지 모든 점수의 상품을 받을 수 있으므로, 받을 수 없는 가장 작은 점수는 23이 되며, 이보다 더 좋은 선택은 없다. 이렇게 얻을 수 있는 '받을 수 없는 가장 작은 점수'의 최댓값을 출력하라.
첫째 줄에 정수 두 개 n과 m이 주어진다. n은 주최 측이 이미 가지고 있는 상품의 수, m은 추가로 구매할 상품의 수이다 (0≤n≤30, 1≤m≤30).
둘째 줄에는 이미 가지고 있는 상품의 값 a1,…,an이 주어진다 (1≤ai≤109). n=0이면 둘째 줄은 비어 있다.
정수 하나를 출력한다. m개의 상품을 사는 모든 방법 중에서, 우승자가 받을 수 없는 가장 작은 양의 정수 점수가 가질 수 있는 최댓값이다.