Leetcode Daily problem
2542. Maximum Subsequence Score
In this approach, we will try to maximize the sum by summing the maximum values together and multiplying the product with corresponding min values....
class Solution {
public:
long long maxScore(vector<int>& nums1, vector<int>& nums2, int k)
{
long long curr_sum=0;
long long prod=0;
long long ans=0;
vector<pair<int,int>> vec;
for(int i=0;i<nums1.size();i++)
{
vec.push_back({nums2[i],nums1[i]});
}
sort(vec.rbegin(),vec.rend());
priority_queue<int,vector<int>,greater<int>> pq;
for(int i=0;i<k-1;i++)
{
curr_sum+=vec[i].second;
pq.push(vec[i].second);
}
for(int j=k-1;j<vec.size();j++)
{
curr_sum+=vec[j].second;
pq.push(vec[j].second);
prod=pq.top();
ans=max(ans,curr_sum*vec[j].first);
curr_sum-=prod;
pq.pop();
}
return ans;
}
};