Given an array arr of size n and an integer X. Find if there's a triplet in the array which sums up to the given integer X.

Example 1:

```Input:
n = 6, X = 13
arr[] = [1 4 45 6 10 8]
Output:
1
Explanation:
The triplet {1, 4, 8} in
the array sums up to 13.```

Example 2:

```Input:
n = 5, X = 10
arr[] = [1 2 4 3 6]
Output:
1
Explanation:
The triplet {1, 3, 6} in
the array sums up to 10.```

method: sorting

1. Sort the given array.
2. Loop over the array and fix the first element of the possible triplet, arr[i].
3. Then fix two pointers, one at i + 1 and the other at n – 1. And look at the sum,
• If the sum is smaller than the required number, increment the first pointer.
• Else, If the sum is bigger, decrease the end pointer to reduce the sum.
• Else, if the sum of elements at two-pointer is equal to given number return true.

c++ implementation:

```bool find3Numbers(int a[], int n, int x)
{
sort(a,a+n);

for(int i=0;i<n;i++)
{
int l=i+1;int r=n-1;
while(l<r)
{
if(a[i]+a[l]+a[r]==x)
return 1;

else if(a[i]+a[l]+a[r]>x)
r--;

else
l++;
}
}
return 0;
}```

Time Complexity: O(n2)
space Complexity: O(1)

darkmode