Maximize the sum

You are given an array A of integers. You want to choose some integers from the array subject to the condition that the number of distinct integers chosen should not exceed 

K. Your task is to maximize the sum of chosen numbers. 

Example:

Input:  n = 4, k = 2, arr = {2, 1, 2, 5}
Output: 9

Approach

C++

#include <bits/stdc++.h>
using namespace std;

long long maximizeTheSum(int nint kvector<long longarr)
{
    unordered_map<long longlong longm;
    for (int j = 0j < nj++)
    {
        m[arr[j]] += arr[j];
    }

    priority_queue<long longq;
    for (auto &it : m)
    {
        q.push(it.second);
    }
    if (q.size() == 0)
    {
        return 0;
    }
    long long sum = 0;
    while (q.size() && k >= 1)
    {
        sum += q.top();
        q.pop();
        k--;
    }
    sum = max(sum0LL);
    return sum;
}
int main()
{
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);
    cout.tie(NULL);

    int n = 4k = 2;

    vector<long longarr = {2125};

    cout << maximizeTheSum(nkarr<< "\n";

    return 0;
}


No comments:

Post a Comment