程式語言 - LeetCode - C++ - 2462. Total Cost to Hire K Workers



參考資訊:
https://www.cnblogs.com/cnoodle/p/17508179.html
https://www.geeksforgeeks.org/c/c-program-to-implement-priority-queue/

題目:


解答:

class Solution {
public:
    long long totalCost(vector<int>& costs, int k, int candidates) {
        long long r = 0;
        int i = 0;
        int j = costs.size() - 1;
        priority_queue<int, vector<int>, greater<int>> left;
        priority_queue<int, vector<int>, greater<int>> right;

        while (k-- > 0) {
            while ((left.size() < candidates) && (i <= j)) {
                left.push(costs[i++]);
            }

            while ((right.size() < candidates) && (i <= j)) {
                right.push(costs[j--]);
            }

            int lv = left.size() > 0 ? left.top() : INT_MAX;
            int rv = right.size() > 0 ? right.top() : INT_MAX;

            if (lv <= rv) {
                r += lv;
                left.pop();
            }
            else {
                r += rv;
                right.pop();
            }
        }

        return r;
    }
};