# Maximum product from array such that frequency sum of all repeating elements in product is less than or equal to 2 * k in C++

C++Server Side ProgrammingProgramming

#### C in Depth: The Complete C Programming Guide for Beginners

45 Lectures 4.5 hours

#### Practical C++: Learn C++ Basics Step by Step

Most Popular

50 Lectures 4.5 hours

#### Master C and Embedded C Programming- Learn as you go

66 Lectures 5.5 hours

In this tutorial, we will be discussing a program to find maximum product from array such that frequency sum of all repeating elements in product is less than or equal to 2 * k.

For this we will be provided with an array and an integer k. Our task is to find the maximum product from the array given that the frequency sum of all digits must be smaller than or equal to 2 * k.

## Example

Live Demo

#include <bits/stdc++.h>
using namespace std;
#define ll long long int
//returning maximum product value
ll maxProd(int arr[], int n, int k) {
ll product = 1;
unordered_map<int, int> s;
sort(arr, arr + n);
for (int i = 0; i < n; i++) {
if (s[arr[i]] == 0) {
product = product * arr[i];
}
//storing values in hash map
s[arr[i]] = s[arr[i]] + 1;
}
for (int j = n - 1; j >= 0 && k > 0; j--) {
if ((k > (s[arr[j]] - 1)) && ((s[arr[j]] - 1) > 0)){
product *= pow(arr[j], s[arr[j]] - 1);
k = k - s[arr[j]] + 1;
s[arr[j]] = 0;
}
if (k <= (s[arr[j]] - 1) && ((s[arr[j]] - 1) > 0)) {
product *= pow(arr[j], k);
break;
}
}
return product;
}
int main() {
int arr[] = { 5, 6, 7, 8, 2, 5, 6, 8 };
int n = sizeof(arr) / sizeof(arr);
int k = 2;
cout << maxProd(arr, n, k);
return 0;
}

## Output

161280