class Solution {
public:
int closestCost(vector<int>& baseCosts, vector<int>& toppingCosts, int target) {
int ans = INT_MAX;
for (int i = 0; i < baseCosts.size(); i++) {
int s;
vector<int> vec = toppingCosts;
vec.insert(vec.end(), toppingCosts.begin(), toppingCosts.end());
for (int j = 0; j < 1 << vec.size(); j++) {
int tmp = j;
int record = vec.size() - 1;
int cnt = 0;
s=baseCosts[i];
while (tmp) {
if (tmp & 1) {
s += vec[record];
cnt++;
}
tmp = tmp >> 1;
record--;
}
if (abs(s - target) < abs(ans - target)) ans = s;
else if(abs(s - target) == abs(ans - target)) ans = min(s, ans);
}
}
return ans;
}
};