3
void find(vector<int> &v, int i, int e, int sum, vector<int> &sumv) {8
find(v, i + 1, e, sum + v[i], sumv);9
find(v, i + 1, e, sum, sumv);12
int minAbsDifference(vector<int> &nums, int goal) {15
// Step 1: Divide nums into 2 subarrays of size n/2 and n-n/218
for (int i = 0; i < n / 2; i++) A.push_back(nums[i]);19
for (int i = n / 2; i < n; i++) B.push_back(nums[i]);21
// Step 2: Find all possible subset sums of A and B23
vector<int> sumA, sumB;24
find(A, 0, A.size(), 0, sumA);25
find(B, 0, B.size(), 0, sumB);27
sort(sumA.begin(), sumA.end());28
sort(sumB.begin(), sumB.end());30
// Step 3: Find combinations from sumA & sumB such that abs(sum-goal) is35
for (int i = 0; i < sumA.size(); i++) {38
int r = sumB.size() - 1;40
int mid = l + (r - l) / 2;41
int sum = s + sumB[mid];42
if (sum == goal) return 0;43
ans = min(ans, abs(sum - goal));