Max Game

Easy
0/40
Average time to solve is 25m
39 upvotes
Asked in companies
AdobeTata Consultancy Services (TCS)Intuit

Problem statement

You are given 'N' numbers and you have to play a game using them. In one move you have to pick any two numbers 'A' and 'B' and replace them by their sum 'A+B'. Doing this gives you a penalty of 'A+B'. Note that the count of elements reduces by 1 every time you take 2 numbers and replace them by their sum. The game ends when there is only one element left. Your task is to minimise the penalty during the game.

You need to return the minimum possible penalty you can have when the game ends.

Detailed explanation ( Input/output format, Notes, Images )
Input format:
The first line of input contains an integer 'T' denoting the number of queries or test cases. 

The first line of every test case contains an integer 'N' denoting the count of numbers.

The second line of every test case contains 'N' single space-separated integers representing the numbers given to you initially. 
Output format:
For each test case, return the minimum possible penalty in a separate line. 
Note:
You do not need to print anything, it has already been taken care of. Just implement the given function.
Constraints:
1 <= T <= 5
1 <= N <= 10^5 
1 <= X[i] <= 10^6 

Time limit: 1 second
Sample input 1:
1
4  
2 3 1 4 
Sample output 1:
19
Explanation
To achieve the minimum penalty,
First, we pick 1 and 2, replace it by 3. We get { 3, 3, 4}
Second, we pick 3 and 3, replace it by 6. We get {4, 6}
Third, we pick 4 and 6, replace it by 10. We get {10}

The minimum penalty will be 3 + 6 + 10 = 19.   
Sample input 2:
1
5
7 6 5 5 3
Sample output 2:
60
Hint

We can observe that when it comes to minimising the penalty. This can be done by considering the 2 smallest numbers every time. This can be done by repeatedly picking up 2 smallest numbers and replacing them with their sum.

Approaches (2)
Brute Force
  1. The idea is to keep only the required elements in the vector/array. Let the given array be { 3, 4, 5, 4}.
  2. We pick the 2 smallest elements i.e 3 and 4 in the above example and replace them with their sum. The above array hence becomes {5, 4, 7}.
  3. Along with this, we also maintain the penalty variable and keep on updating it. Initial value of the penalty will be 0. After we perform step 2, the penalty becomes 4+3=7.
  4. In the same way, we repeat the steps 2 and 3 until the size of the vector/ array becomes 1. In the example given above, from {5, 4, 7}, the 2 smallest elements are 4 and 5. The array becomes {7, 9} and penalty becomes 7 + 4 + 5 = 16. Then again, the two smallest elements are 7 and 9. Thus, the array becomes {16} and the penalty becomes 16 + 16 = 32. Now, we stop iterating as the size of the array becomes 1.
Time Complexity

O(N^2), where ‘N’ is the total numbers given initially.

 

In the worst case, for ‘N - 1’ number of times, we are picking out 2 smallest numbers in O(N) time, removing them from the array in O(N) time and adding the sum of numbers into the array.   

Space Complexity

O(1) .

 

In the worst case, only constant space is required.

Code Solution
(100% EXP penalty)
Max Game
Full screen
Console