# Minimum cost to make array size 1 by removing larger of pairs

Given an array of n integers. We need to reduce size of array to one. We are allowed to select a pair of integers and remove the larger one of these two. This decreases the array size by 1. Cost of this operation is equal to value of smaller one. Find out minimum sum of costs of operations needed to convert the array into a single element.

Examples:

```Input: 4 3 2
Output: 4
Explanation:
Choose (4, 2) so 4 is removed, new array
= {2, 3}. Now choose (2, 3) so 3 is removed.
So total cost = 2 + 2 = 4

Input: 3 4
Output: 3
Explanation: choose 3, 4, so cost is 3.
```

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

The idea is to always pick minimum value as part of the pair and remove larger value. This minimizes cost of reducing array to size 1.

Below is the implementation of the above approach:

## CPP

 `// CPP program to find minimum cost to ` `// reduce array size to 1, ` `#include ` `using` `namespace` `std; ` ` `  `// function to calculate the minimum cost ` `int` `cost(``int` `a[], ``int` `n) ` `{ ` `    ``// Minimum cost is n-1 multiplied with ` `    ``// minimum element. ` `    ``return` `(n - 1) * (*min_element(a, a + n)); ` `} ` ` `  `// driver program to test the above function. ` `int` `main() ` `{ ` `    ``int` `a[] = { 4, 3, 2 }; ` `    ``int` `n = ``sizeof``(a) / ``sizeof``(a); ` `    ``cout << cost(a, n) << endl; ` `    ``return` `0; ` `} `

## Java

 `// Java program to find minimum cost ` `// to reduce array size to 1, ` `import` `java.lang.*; ` ` `  `public` `class` `GFG { ` `     `  `    ``// function to calculate the ` `    ``// minimum cost ` `    ``static` `int` `cost(``int` `[]a, ``int` `n) ` `    ``{ ` `        ``int` `min = a[``0``]; ` `         `  `        ``// find the minimum using ` `        ``// for loop ` `        ``for``(``int` `i = ``1``; i< a.length; i++) ` `        ``{ ` `            ``if` `(a[i] < min) ` `                ``min = a[i]; ` `        ``}  ` `         `  `        ``// Minimum cost is n-1 multiplied ` `        ``// with minimum element. ` `        ``return` `(n - ``1``) * min; ` `    ``} ` `     `  `    ``// driver program to test the ` `    ``// above function. ` `    ``static` `public` `void` `main (String[] args) ` `    ``{ ` `         `  `        ``int` `[]a = { ``4``, ``3``, ``2` `}; ` `        ``int` `n = a.length; ` `         `  `        ``System.out.println(cost(a, n)); ` `    ``} ` `} ` ` `  `// This code is contributed by parashar. `

## Python3

 `# Python program to find minimum  ` `# cost to reduce array size to 1 ` ` `  `# function to calculate the  ` `# minimum cost ` `def` `cost(a, n): ` ` `  `    ``# Minimum cost is n-1 multiplied ` `    ``# with minimum element. ` `    ``return` `( (n ``-` `1``) ``*` `min``(a) ) ` ` `  ` `  `# driver code ` `a ``=` `[ ``4``, ``3``, ``2` `] ` `n ``=` `len``(a) ` `print``(cost(a, n)) ` ` `  `# This code is contributed by ` `# Smitha Dinesh Semwal `

## C#

 `// C# program to find minimum cost to ` `// reduce array size to 1, ` `using` `System; ` `using` `System.Linq; ` ` `  `public` `class` `GFG { ` `     `  `    ``// function to calculate the minimum cost ` `    ``static` `int` `cost(``int` `[]a, ``int` `n) ` `    ``{ ` `         `  `        ``// Minimum cost is n-1 multiplied with ` `        ``// minimum element. ` `        ``return` `(n - 1) * a.Min(); ` `    ``} ` `     `  `    ``// driver program to test the above function. ` `    ``static` `public` `void` `Main (){ ` `         `  `        ``int` `[]a = { 4, 3, 2 }; ` `        ``int` `n = a.Length; ` `         `  `        ``Console.WriteLine(cost(a, n)); ` `    ``} ` `} ` ` `  `// This code is contributed by vt_m. `

## PHP

 ` `

Output:

```4
```

Time Complexity : O(n)

This article is contributed by Striver. 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.

My Personal Notes arrow_drop_up Striver(underscore)79 at Codechef and codeforces D

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.

Improved By : parashar, vt_m

Article Tags :
Practice Tags :

Be the First to upvote.

Please write to us at contribute@geeksforgeeks.org to report any issue with the above content.