Related Articles
Choose n elements such that their mean is maximum
• Difficulty Level : Basic
• Last Updated : 07 May, 2021

Given an array of 2 * n elements, the task is to construct and print an array of n elements 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

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

 `

## Javascript

 ``
Output:
`4 4 7 8`

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.  To complete your preparation from learning a language to DS Algo and many more,  please refer Complete Interview Preparation Course.

In case you wish to attend live classes with industry experts, please refer Geeks Classes Live

My Personal Notes arrow_drop_up