Description
Submission
class Solution {
typedef pair<int, int> PII;
public:
vector<int> getOrder(vector<vector<int>>& tasks) {
for(int i = 0; i < tasks.size(); ++i) {
tasks[i].push_back(i);
}
sort(tasks.begin(), tasks.end());
vector<int> rets;
priority_queue<PII, vector<PII>, greater<>> pq; // processing time, index
long long t = tasks[0][0], i = 0;
for(; i < tasks.size(); ++i) {
if(t == tasks[i][0]) {
pq.emplace(tasks[i][1], tasks[i][2]);
} else {
break;
}
}
while(!pq.empty()) {
auto [processingTime, index] = pq.top();
// cout << index << endl;
pq.pop();
rets.push_back(index);
t += processingTime;
if(pq.empty() && i < tasks.size() && tasks[i][0] > t) t = tasks[i][0];
for(; i < tasks.size(); ++i) {
if(tasks[i][0] <= t) {
pq.emplace(tasks[i][1], tasks[i][2]);
} else {
break;
}
}
}
return rets;
}
};
class Solution {
typedef pair<int, int> PII;
public:
vector<int> getOrder(vector<vector<int>>& tasks) {
for(int i = 0; i < tasks.size(); ++i) {
tasks[i].push_back(i);
}
sort(tasks.begin(), tasks.end());
vector<int> rets;
priority_queue<PII, vector<PII>, greater<>> pq; // processing time, index
long long t = tasks[0][0], i = 0;
for(; i < tasks.size(); ++i) {
if(t == tasks[i][0]) {
pq.emplace(tasks[i][1], tasks[i][2]);
} else {
break;
}
}
while(!pq.empty()) {
auto [processingTime, index] = pq.top();
// cout << index << endl;
pq.pop();
rets.push_back(index);
t += processingTime;
if(pq.empty() && i < tasks.size() && tasks[i][0] > t) t = tasks[i][0];
for(; i < tasks.size(); ++i) {
if(tasks[i][0] <= t) {
pq.emplace(tasks[i][1], tasks[i][2]);
} else {
break;
}
}
}
return rets;
}
};
class Solution { typedef pair<int, int> PII; public: vector<int> getOrder(vector<vector<int>>& tasks) { for(int i = 0; i < tasks.size(); ++i) { tasks[i].push_back(i); } sort(tasks.begin(), tasks.end()); vector<int> rets; priority_queue<PII, vector<PII>, greater<>> pq; // processing time, index long long t = tasks[0][0], i = 0; for(; i < tasks.size(); ++i) { if(t == tasks[i][0]) { pq.emplace(tasks[i][1], tasks[i][2]); } else { break; } } while(!pq.empty()) { auto [processingTime, index] = pq.top(); // cout << index << endl; pq.pop(); rets.push_back(index); t += processingTime; if(pq.empty() && i < tasks.size() && tasks[i][0] > t) t = tasks[i][0]; for(; i < tasks.size(); ++i) { if(tasks[i][0] <= t) { pq.emplace(tasks[i][1], tasks[i][2]); } else { break; } } } return rets; } };