Given an array arr[] containing natural numbers from 1 to N, the task is to find the maximum number of elements that can be made equal after the below operations:
- Remove any pair of elements from the array and insert their sum to an array.
- Repeat the above operation any numbers of times to maximize the count of equal elements.
Examples:
Input: arr[] = {1, 2, 3, 4}
Output: 2
Explanation:
We can perform following operations:
{1, 2, 3, 4} -> {3, 3, 4} -> 2 elements are equalInput: arr[] = {1 2 3 4 5 6}
Output: 3
Explanation:
{1, 2, 3, 4, 5, 6} -> {7, 2, 3, 4, 5} -> {7, 7, 3, 4} -> {7, 7, 37} -> 3 elements are equal
Approach: The key observation in the problem is that:
- If N is even, we can make a maximum count of equal elements by
- If N is odd, we can make the maximum count of equal elements by
Therefore, the answer will always be
Below is the implementation of the above approach:
// C++ implementation of // the above approach #include <bits/stdc++.h> using namespace std;
// Function to count maximum number // of array elements equal int countEqual( int n)
{ return (n + 1) / 2;
} // Driver Code int main()
{ int arr[] = { 1, 2, 3, 4, 5, 6 };
int n = sizeof (arr) / sizeof (arr[0]);
// Function Call
cout << countEqual(n);
return 0;
} |
// Java implementation of // the above approach import java.io.*;
class GFG{
// Function to count maximum number // of array elements equal static int countEqual( int n)
{ return (n + 1 ) / 2 ;
} // Driver Code public static void main (String[] args)
{ int arr[] = { 1 , 2 , 3 , 4 , 5 , 6 };
int n = arr.length;
// Function call
System.out.println(countEqual(n));
} } // This code is contributed by AnkitRai01 |
# Python3 implementation of # the above approach # Function to count maximum number # of array elements equal def countEqual(n):
return (n + 1 ) / / 2
# Driver Code lst = [ 1 , 2 , 3 , 4 , 5 , 6 ]
n = len (lst)
# Function call print (countEqual(n))
# This code is contributed by vishu2908 |
// C# implementation of // the above approach using System;
class GFG{
// Function to count maximum number // of array elements equal static int countEqual( int n)
{ return (n + 1) / 2;
} // Driver Code public static void Main(String[] args)
{ int []arr = {1, 2, 3, 4, 5, 6};
int n = arr.Length;
// Function call
Console.WriteLine(countEqual(n));
} } // This code is contributed by Rajput-Ji |
<script> // Javascript implementation of // the above approach // Function to count maximum number // of array elements equal function countEqual(n)
{ return parseInt((n + 1) / 2);
} // Driver Code var arr = [ 1, 2, 3, 4, 5, 6 ];
var n = arr.length;
// Function Call document.write( countEqual(n)); // This code is contributed by rrrtnx. </script> |
Output:
3
Performance Analysis:
Time Complexity: O(1), as we are not using any loops or recursion.
Auxiliary Space: O(1), as we are not using any extra space.