Untitled
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