Minimum Cost to Hire K Workers LeetCode solution in C++

1
class Solution {
2
public:
3
double mincostToHireWorkers(vector<int> &quality, vector<int> &wage, int k) {
4
priority_queue<pair<double, int>, vector<pair<double, int>>, greater<pair<double, int>>> pqmn;
5
priority_queue<int> pqmx;
6
int n = quality.size();
7
for (int i = 0; i < n; i++) {
8
pqmn.push({(double)wage[i] / quality[i], quality[i]});
9
}
10
double SumQuality = 0;
11
double ans = INT_MAX;
12
while (!pqmn.empty()) {
13
pair<double, int> p = pqmn.top();
14
SumQuality += p.second;
15
pqmx.push(p.second);
16
pqmn.pop();
17
if (pqmx.size() > k) {
18
SumQuality -= pqmx.top();
19
pqmx.pop();
20
}
21
if (pqmx.size() == k) {
22
ans = min(ans, SumQuality * p.first);
23
}
24
}
25
return ans;
26
}
27
};

0

WPM •0 •0

100%

ACC •0 •0

0s

TIME •0