Skip to content
Related Articles

Related Articles

Improve Article
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 <bits/stdc++.h>
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




<?php
// PHP implementation of the approach
 
// Utility function to print the contents
// of an array
function printArray($arr, $n)
{
    for ($i = 0; $i < $n; $i++)
        echo $arr[$i] . " ";
}
 
// Function to print the array with
// maximum mean
function printMaxMean($arr, $n)
{
    $newArr[$n] = array();
 
    // Sort the original array
    sort($arr,0);
 
    // Construct new array
    for ($i = 0; $i < $n; $i++)
        $newArr[$i] = $arr[$i + $n];
 
    // Print the resultant array
    printArray($newArr, $n);
}
 
// Driver code
$arr = array(4, 8, 3, 1, 3, 7, 0, 4);
$n = sizeof($arr);
printMaxMean($arr, $n / 2);
 
// This code is contributed
// by Akanksha Rai

Javascript




<script>
// javascript implementation of the approach
 
 
    // Utility function to prvar the
    // contents of an array
    function printArray(arr , n) {
        for (i = 0; i < n; i++)
            document.write(arr[i] + " ");
    }
 
    // Function to prvar the array
    // with maximum mean
    function printMaxMean(arr , n) {
        var newArr = Array(n).fill(0);
 
        // Sort the original array
        arr.sort((a,b)=>a-b);
 
        // Construct new array
        for (i = 0; i < n; i++)
            newArr[i] = arr[i + n];
 
        // Prvar the resultant array
        printArray(newArr, n);
    }
 
    // Driver code
     
        var arr = [ 4, 8, 3, 1, 3, 7, 0, 4 ];
        var n = arr.length;
        printMaxMean(arr, n / 2);
 
// This code contributed by gauravrajput1
</script>
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
Recommended Articles
Page :