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++
// 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
// 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
# 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#
// 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 |
Javascript
<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> |
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.
Ready to dive in? Explore our Free Demo Content and join our DSA course, trusted by over 100,000 neveropen!