Skip to content

Commit e19c38e

Browse files
Merge pull request #2708 from tahzeer/patch-4
Create 2542-maximum-subsequence-score.cpp
2 parents fd9f4fc + f699658 commit e19c38e

File tree

1 file changed

+38
-0
lines changed

1 file changed

+38
-0
lines changed
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
// Time: O(NlogN)
2+
// Space: O(N)
3+
4+
class Solution {
5+
public:
6+
long long maxScore(vector<int>& nums1, vector<int>& nums2, int k) {
7+
int size = nums1.size();
8+
vector<pair<int, int>> pairs(size);
9+
10+
// populating the array
11+
for(int i = 0; i < size; i++) {
12+
pairs.push_back(make_pair(nums1[i], nums2[i]));
13+
}
14+
15+
// sorting the array using comparator lambda function
16+
sort(pairs.begin(), pairs.end(), [](pair<int, int> a, pair<int, int> b) {
17+
return (a.second > b.second);
18+
});
19+
20+
priority_queue<int, vector<int>, greater<int>> minh;
21+
long long currSum = 0;
22+
long long maxSum = INT_MIN;
23+
24+
for(int i = 0; i < size; i++) {
25+
currSum += pairs[i].first;
26+
minh.push(pairs[i].first);
27+
28+
if(minh.size() > k) {
29+
currSum -= minh.top();
30+
minh.pop();
31+
}
32+
if(minh.size() == k) {
33+
maxSum = max(maxSum, (currSum * pairs[i].second));
34+
}
35+
}
36+
return maxSum;
37+
}
38+
};

0 commit comments

Comments
 (0)