int FindMinSum(vector<int> &arr, int len, int target)
{
std::sort(arr.begin(), arr.end());
int ans = 0;
if(arr.size() <=3)
{
for(int i=0; i < arr.size(); ++i)
{
ans += arr[i];
}
return ans;
}
ans = arr[0] + arr[1] + arr[2];
for(int i=0; i < arr.size(); ++i)
{
int start = i+1; int end = arr.size() - 1;
while(start < end)
{
int sum = arr[i] + arr[start] + arr[end];
if(abs(target-sum) < abs(target-ans))
ans = sum;
if(sum > target)
end--;
else if(sum < target)
start++;
else
return ans;
}
}
return ans;
}
int main()
{
int arr[] = {-1,2,1,-4};
vector<int> varr(arr, arr + sizeof(arr)/sizeof(arr[0]));
int target = 1;
int ret = FindMinSum(varr, varr.size(), target);
printf("result = %d \n", ret);
return 0;
}