例題 Q-2-10. 子集合的和 (折半枚舉)
輸入 \(n\) 個正整數 \(A[1..n]\),另外給了一個整數 \(P\),請計算 \(A\) 中元素各種組合中,其和最接近 \(P\) 但不超過 \(P\) 的和是多少。 每個元素可以選取或不選取但不可重複選,\(A\) 中的數字可能重複。\(A[i]\) 與 \(P\) 均不超過 \(2^{60}\),\(0 < n \leq 38\)。
輸入格式
第一行是 \(n\) 與 \(P\), 第二行 \(n\) 個整數是 \(A[i]\),同行數字以空白間隔。
輸出格式
最接近 \(P\) 但不超過 \(P\) 的和。
範例輸入
5 17
5 5 8 3 10
範例輸出
16
留言