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

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++

filter_none

edit
close

play_arrow

link
brightness_4
code

// 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;
}

chevron_right


Java

filter_none

edit
close

play_arrow

link
brightness_4
code

// 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

chevron_right


Python3

filter_none

edit
close

play_arrow

link
brightness_4
code

# 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] *
  
    # 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

chevron_right


C#

filter_none

edit
close

play_arrow

link
brightness_4
code

// 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.

chevron_right


PHP

filter_none

edit
close

play_arrow

link
brightness_4
code

<?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

chevron_right


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.