# 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

## Recommended: Please try your approach on {IDE} first, before moving on to the solution.

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:

 `// 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); ` ` `  `    ``// Function call to find product ` `    ``cout << minimumProduct(arr, n) << endl; ` `    ``return` `0; ` `} `

 `// 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 `

 `# 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 `

 `// 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 `

Output:
```270
```

Time Complexity: O(N*log N)

Attention reader! Don’t stop learning now. Get hold of all the important DSA concepts with the DSA Self Paced Course at a student-friendly price and become industry ready.

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.

Article Tags :