Minimum sum of product of elements of pairs of the given array

Given an array arr[] of even number of element N in it. The task is to form N/2 pairs such that sum of product of elements in those pairs is minimum.

Examples

Input: arr[] = { 1, 6, 3, 1, 7, 8 }
Output: 270
Explanation:
The pair formed are {1, 1}, {3, 6}, {7, 8}
Product of sum of these pairs = 2 * 9 * 15 = 270



Input: arr[] = {2, 3, 90, 12}
Output: 510
Explanation:
Pairs should be created in this way {2, 3}, {12, 90}
Product of sum of these pairs = 5*112 = 510

Approach:

  • Sort the elements in the given array arr[].
  • Make pairs of first two-element, then next two-element and so on.
  • Calculate the sum of product of corresponding pairs formed.

Below is the implementation of the above approach:

CPP

filter_none

edit
close

play_arrow

link
brightness_4
code

// C++ program to find the minimum
// product of sum of pair of element
// in array arr[]
#include "bits/stdc++.h"
using namespace std;
  
// Function to find the minimum
// product
int minimumProduct(int* arr, int n)
{
  
    // Sort the array using STL
    // sort() function
    sort(arr, arr + n);
  
    // Intialise product to 1
    int product = 1;
  
    for (int i = 0; i < n; i += 2) {
  
        // Find product of sum of
        // all pairs
        product *= (arr[i] + arr[i + 1]);
    }
  
    // Return the product
    return product;
}
  
// Driver code
int main()
{
    int arr[] = { 1, 6, 3, 1, 7, 8 };
    int n = sizeof(arr) / sizeof(arr[0]);
  
    // Function call to find product
    cout << minimumProduct(arr, n) << endl;
    return 0;
}

chevron_right


Java

filter_none

edit
close

play_arrow

link
brightness_4
code

// Java program to find the minimum
// product of sum of pair of element
// in array arr[]
import java.util.*;
  
class GFG{
   
// Function to find the minimum
// product
static int minimumProduct(int[] arr, int n)
{
   
    // Sort the array using STL
    // sort() function
    Arrays.sort(arr);
   
    // Intialise product to 1
    int product = 1;
   
    for (int i = 0; i < n; i += 2) {
   
        // Find product of sum of
        // all pairs
        product *= (arr[i] + arr[i + 1]);
    }
   
    // Return the product
    return product;
}
   
// Driver code
public static void main(String[] args)
{
    int arr[] = { 1, 6, 3, 1, 7, 8 };
    int n = arr.length;
   
    // Function call to find product
    System.out.print(minimumProduct(arr, n) +"\n");
}
}
  
// This code is contributed by sapnasingh4991

chevron_right


Python3

filter_none

edit
close

play_arrow

link
brightness_4
code

# Python3 program to find the minimum
# product of sum of pair of element
# in array arr[]
  
# Function to find the minimum
# product
def minimumProduct(arr, n):
  
    # Sort the array using STL
    # sort() function
    arr = sorted(arr)
  
    # Intialise product to 1
    product = 1
  
    for i in range(0, n, 2):
  
        # Find product of sum of
        # all pairs
        product *= (arr[i] + arr[i + 1])
  
    # Return the product
    return product
  
# Driver code
  
arr = [1, 6, 3, 1, 7, 8]
n = len(arr)
  
# Function call to find product
print(minimumProduct(arr, n))
  
# This code is contributed by mohit kumar 29

chevron_right


C#

filter_none

edit
close

play_arrow

link
brightness_4
code

// C# program to find the minimum
// product of sum of pair of element
// in array arr[]
using System; 
  
class GFG { 
  
    // Function to find the minimum
    // product
    static int minimumProduct(int[] arr, int n)
    {
      
        // Sort the array 
        // sort() function
        Array.Sort(arr);
      
        // Intialise product to 1
        int product = 1;
      
        for (int i = 0; i < n; i += 2) {
      
            // Find product of sum of
            // all pairs
            product *= (arr[i] + arr[i + 1]);
        }
      
        // Return the product
        return product;
    }
      
    // Driver code
    static void Main() 
    {
        int[] arr = new int[] { 1, 6, 3, 1, 7, 8 };
        int n = arr.Length;
      
        // Function call to find product
        Console.Write(minimumProduct(arr, n));
    }
}
  
// This code is contributed by shubhamsingh10

chevron_right


Output:

270

Time Complexity: O(N*log N)

GeeksforGeeks has prepared a complete interview preparation course with premium videos, theory, practice problems, TA support and many more features. Please refer Placement 100 for details




My Personal Notes arrow_drop_up

Check out this Author's contributed articles.

If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.