Untitled

 avatar
unknown
plain_text
9 months ago
1.2 kB
11
Indexable
class Solution {
public:
    vector<int> getOrder(vector<vector<int>>& tasks) {
        int n = tasks.size();
        for(int i=0;i<n;i++){
            tasks[i].push_back(i);
        }
        sort(tasks.begin(),tasks.end(),[](vector<int>&a,vector<int>&b){
            if(a[0]==b[0]){ return a[1]<b[1]; }
            else{ return a[0]<b[0]; }
        });
        auto cmp = [](vector<int>&a,vector<int>&b){ 
            if (a[1]==b[1]) return a[2]>b[2];
            else return a[1]>b[1]; };
        priority_queue<vector<int>,vector<vector<int>>,decltype(cmp)> pq(cmp);
        long long cur_time = tasks[0][0];
        int cur_idx = 0; 
        vector<int> result;
        while (result.size() < n ) {
            while (cur_idx < n && tasks[cur_idx][0] <= cur_time) {
                pq.push(tasks[cur_idx]);
                cur_idx++;
            }
            if (pq.empty()) {
                cur_time = tasks[cur_idx][0];
            } else {
                auto cur_task = pq.top();
                pq.pop();
                result.push_back(cur_task[2]);          
                cur_time += cur_task[1];
            }
        }
        return result;
    }
};
Editor is loading...
Leave a Comment