C++ Program for Number of pairs with maximum sum
Given an array arr[], count number of pairs arr[i], arr[j] such that arr[i] + arr[j] is maximum and i < j.
Example :
Input : arr[] = {1, 1, 1, 2, 2, 2}
Output : 3
Explanation: The maximum possible pair
sum where i
Method 1 (Naive)Â
Traverse a loop i from 0 to n, i.e length of the array and another loop j from i+1 to n to find all possible pairs with i
C++
#include <bits/stdc++.h>
using namespace std;
int sum( int a[], int n)
{
int maxSum = INT_MIN;
for ( int i = 0; i < n; i++)
for ( int j = i + 1; j < n; j++)
maxSum = max(maxSum, a[i] + a[j]);
int c = 0;
for ( int i = 0; i < n; i++)
for ( int j = i + 1; j < n; j++)
if (a[i] + a[j] == maxSum)
c++;
return c;
}
int main()
{
int array[] = { 1, 1, 1, 2, 2, 2 };
int n = sizeof (array) / sizeof (array[0]);
cout << sum(array, n);
return 0;
}
|
Output :Â
3
Time complexity:O(n^2)
Method 2 (Efficient)Â
If we take a closer look, we can notice following facts.Â
- Maximum element is always part of solution
- If maximum element appears more than once, then result is maxCount * (maxCount - 1)/2. We basically need to choose 2 elements from maxCount (maxCountC2).
- If maximum element appears once, then result is equal to count of second maximum element. We can form a pair with every second max and max
C++
#include <bits/stdc++.h>
using namespace std;
int sum( int a[], int n)
{
int maxVal = a[0], maxCount = 1;
int secondMax = INT_MIN, secondMaxCount;
for ( int i = 1; i < n; i++) {
if (a[i] == maxVal)
maxCount++;
else if (a[i] > maxVal) {
secondMax = maxVal;
secondMaxCount = maxCount;
maxVal = a[i];
maxCount = 1;
}
else if (a[i] == secondMax) {
secondMax = a[i];
secondMaxCount++;
}
else if (a[i] > secondMax) {
secondMax = a[i];
secondMaxCount = 1;
}
}
if (maxCount > 1)
return maxCount * (maxCount - 1) / 2;
return secondMaxCount;
}
int main()
{
int array[] = { 1, 1, 1, 2, 2, 2, 3 };
int n = sizeof (array) / sizeof (array[0]);
cout << sum(array, n);
return 0;
}
|
Output :Â
Â
3
Time complexity:O(n)
Â
Please refer complete article on Number of pairs with maximum sum for more details!
Last Updated :
13 Jan, 2022
Like Article
Save Article
Share your thoughts in the comments
Please Login to comment...