# Choose n elements such that their mean is maximum

Given an array of 2 * n elements, the task is to construct and print an array of n element such that the mean of the new array is maximum. Here n is even.

Examples:

Input: arr[] = {3, 1, 2, 3, 8, 6}
Output: 3 6 8

Input: arr[] = {3, 2, 3, 8}
Output: 3 8

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

Approach: Mean of an array is the average of the elements of the same array i.e (∑arr[i]) / n. So, in order for the mean of the array to be maximum, choose the maximum n elements from the array, this can be done by first sorting the array and then choosing the elements starting from the maximum.

Below is the implementation of the above approach:

## C++

 `// C++ implementation of the approach ` `#include ` `using` `namespace` `std; ` ` `  `// Utility function to print the contents ` `// of an array ` `void` `printArray(``int` `arr[], ``int` `n) ` `{ ` `    ``for` `(``int` `i = 0; i < n; i++) ` `        ``cout << arr[i] << ``" "``; ` `} ` ` `  `// Function to print the array with ` `// maximum mean ` `void` `printMaxMean(``int` `arr[], ``int` `n) ` `{ ` `    ``int` `newArr[n]; ` ` `  `    ``// Sort the original array ` `    ``sort(arr, arr + 2 * n); ` ` `  `    ``// Construct new array ` `    ``for` `(``int` `i = 0; i < n; i++) ` `        ``newArr[i] = arr[i + n]; ` ` `  `    ``// Print the resultant array ` `    ``printArray(newArr, n); ` `} ` ` `  `// Driver code ` `int` `main() ` `{ ` `    ``int` `arr[] = { 4, 8, 3, 1, 3, 7, 0, 4 }; ` `    ``int` `n = ``sizeof``(arr) / ``sizeof``(arr[0]); ` `    ``printMaxMean(arr, n / 2); ` ` `  `    ``return` `0; ` `} `

## Java

 `// Java implementation of the approach ` `import` `java.util.Arrays; ` ` `  `class` `GfG{ ` ` `  `    ``// Utility function to print the   ` `    ``// contents of an array  ` `    ``static` `void` `printArray(``int` `arr[], ``int` `n)  ` `    ``{  ` `        ``for` `(``int` `i = ``0``; i < n; i++)  ` `            ``System.out.print(arr[i] + ``" "``);  ` `    ``}  ` `     `  `    ``// Function to print the array   ` `    ``// with maximum mean  ` `    ``static` `void` `printMaxMean(``int` `arr[], ``int` `n)  ` `    ``{  ` `        ``int` `newArr[] = ``new` `int``[n];  ` `     `  `        ``// Sort the original array  ` `        ``Arrays.sort(arr, ``0``, ``2` `* n); ` `     `  `        ``// Construct new array  ` `        ``for` `(``int` `i = ``0``; i < n; i++)  ` `            ``newArr[i] = arr[i + n];  ` `     `  `        ``// Print the resultant array  ` `        ``printArray(newArr, n);  ` `    ``}  ` ` `  `    ``// Driver code ` `    ``public` `static` `void` `main(String []args) ` `    ``{ ` `        ``int` `arr[] = { ``4``, ``8``, ``3``, ``1``, ``3``, ``7``, ``0``, ``4` `};  ` `        ``int` `n = arr.length;  ` `        ``printMaxMean(arr, n / ``2``);  ` `    ``} ` `} ` ` `  `// This code is contributed by ` `// Rituraj Jain `

## Python3

 `# Python3 implementation of the approach  ` ` `  `# Utility function to print the contents  ` `# of an array  ` `def` `printArray(arr, n) : ` `    ``for` `i ``in` `range``(n) :  ` `        ``print``(arr[i], end ``=` `" "``) ` ` `  `# Function to print the array with  ` `# maximum mean  ` `def` `printMaxMean(arr, n) : ` `    ``newArr ``=` `[``0``] ``*` `n  ` ` `  `    ``# Sort the original array  ` `    ``arr.sort() ` ` `  `    ``# Construct new array  ` `    ``for` `i ``in` `range``(n) :  ` `        ``newArr[i] ``=` `arr[i ``+` `n] ` ` `  `    ``# Print the resultant array  ` `    ``printArray(newArr, n) ` ` `  `# Driver code  ` `if` `__name__ ``=``=` `"__main__"` `: ` ` `  `    ``arr ``=` `[ ``4``, ``8``, ``3``, ``1``, ``3``, ``7``, ``0``, ``4` `]  ` `    ``n ``=` `len``(arr)  ` `    ``printMaxMean(arr, n ``/``/` `2``)  ` ` `  `# This code is contributed by Ryuga `

## C#

 `// C# implementation of the approach ` `using` `System; ` ` `  `class` `GfG ` `{ ` ` `  `    ``// Utility function to print the  ` `    ``// contents of an array  ` `    ``static` `void` `printArray(``int``[] arr, ``int` `n)  ` `    ``{  ` `        ``for` `(``int` `i = 0; i < n; i++)  ` `            ``Console.Write(arr[i] + ``" "``);  ` `    ``}  ` `     `  `    ``// Function to print the array  ` `    ``// with maximum mean  ` `    ``static` `void` `printMaxMean(``int``[] arr, ``int` `n)  ` `    ``{  ` `        ``int``[] newArr = ``new` `int``[n];  ` `     `  `        ``// Sort the original array  ` `        ``Array.Sort(arr, 0, 2 * n); ` `     `  `        ``// Construct new array  ` `        ``for` `(``int` `i = 0; i < n; i++)  ` `            ``newArr[i] = arr[i + n];  ` `     `  `        ``// Print the resultant array  ` `        ``printArray(newArr, n);  ` `    ``}  ` ` `  `    ``// Driver code ` `    ``public` `static` `void` `Main() ` `    ``{ ` `        ``int``[] arr = { 4, 8, 3, 1, 3, 7, 0, 4 };  ` `        ``int` `n = arr.Length;  ` `        ``printMaxMean(arr, n / 2);  ` `    ``} ` `} ` ` `  `// This code is contributed by Ita_c. `

## PHP

 `

Output:

```4 4 7 8
```

My Personal Notes arrow_drop_up

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.