857. Minimum Cost to Hire K Workers
https://leetcode.com/problems/dungeon-game/description/
/*
* @lc app=leetcode id=857 lang=cpp
*
* [857] Minimum Cost to Hire K Workers
*/
class Solution {
public:
double mincostToHireWorkers(vector<int>& quality, vector<int>& wage, int K) {
const int N = quality.size();
vector<vector<double>> workers;
for (int i = 0; i < N; ++i) {
workers.push_back({(double) (wage[i]) / quality[i], (double)quality[i]});
}
sort(workers.begin(), workers.end(), [](vector<double> &a, vector<double> &b){
return a[0] < b[0];
});
double res = DBL_MAX, qual_sum = 0;
priority_queue<double> pq;
for (const auto &worker : workers) {
qual_sum += worker[1];
pq.push(worker[1]);
if (pq.size() > K) {
qual_sum -= pq.top();
pq.pop();
}
if (pq.size() == K) {
res = min(res, qual_sum * worker[0]);
}
}
return res;
}
};
Last updated