

Consider ARR = [3, 4, 5] now suppose if we want to change every element value to 4, then the cost of changing 3 to 4 is |3 - 4| which is 1, and the cost of changing 5 to 4 is |5 - 4| which is 1, so the total cost is 1 + 1 = 2. The value 2 is the minimum cost to make all values in the array equal. Hence, the answer is 2.
The first line of the input contains an integer ‘T’ denoting the number of test cases.
The first line of each test case contains a single integer, ‘N’, denoting the number of elements in the array.
The second line of each test case contains 'N' space-separated integers denoting the elements of the array.
For each test case, print the minimum cost to make elements of the array equal.
Print the output of each test case in a separate line.
1 <= T <= 5
1 <= N <= 10^5
1 <= ARR[i] <= 10^8
Time limit: 1 sec
In this approach, we will traverse the array for each value between the minimum and maximum value of the array. We will find the cost for each value to make the elements of the array equal to that particular value. We will maintain a variable minimumCost that stores the minimum cost from all these costs.
For example, ARR = [2, 16, 11], then we will find the cost needed to convert every element in the array to the particular value for each value between 2 and 16. We have to maintain minimumCost to store the minimum cost. In the end, the variable minimumCost is our answer.
In this one pattern, as we increase the target value, the cost decreases up to a limit then starts increasing, which means some U shape graph is present. We have to find the lowest cost, which is the lowest point of this U shape graph, so for this, we are going to use the ternary search here and set the highest and lowest value of the array as limits, and then we will keep skipping 1/3 part of the search space until we reach to the bottom-most point of our U-curve.