I've got all unique triplets from code below but I want to reduce its time complexity. It consists of three for loops. So my question is: Is it possible to do in minimum number of loops that it decreases its time complexity?
Thanks in advance. Let me know.
   #include <cstdlib>
    #include<iostream>
    using namespace std;
    void Triplet(int[], int, int); 
    void Triplet(int array[], int n, int sum)
    {
       // Fix the first element and find other two
         for (int i = 0; i < n-2; i++)
         {
            // Fix the second element and find one
               for (int j = i+1; j < n-1; j++)
            {
               // Fix the third element
               for (int k = j+1; k < n; k++)
               if (array[i] + array[j] + array[k] == sum)
                cout << "Result :\t" << array[i] << " + " << array[j] << " + " << array[k]<<" = " << sum << endl;
             }
          }
     }
    int main()
    {
        int A[] = {-10,-20,30,-5,25,15,-2,12};
        int sum = 0;
        int arr_size = sizeof(A)/sizeof(A[0]);
        cout<<"********************O(N^3) Time Complexity*****************************"<<endl;
        Triplet(A,arr_size,sum);
        return 0;
    }
 
     
     
     
     
    