처음에 현재 시간과 도착 시간을 고려하지 않고 모든 작업을 큐에 넣어 처리하여 예외가 있어 실패했다.

오답 코드
#include <string>
#include <vector>
#include <queue>
#include <tuple>
using namespace std;
struct compare
{
bool operator () (tuple<int, int, int> t1, tuple<int, int, int> t2){
if(get<0>(t1) == get<0>(t2) && get<1>(t1) == get<1>(t2)) return get<2>(t1) > get<2>(t2);
else if(get<0>(t1) == get<0>(t2)) return get<1>(t1) > get<1>(t2);
else return get<0>(t1) > get<0>(t2);
}
};
int solution(vector<vector<int>> jobs) {
priority_queue<tuple<int, int, int>, vector<tuple<int, int, int>>, compare> pq;
for(int i = 0; i < jobs.size(); i++) pq.push({jobs[i][1], jobs[i][0], i});
vector<int> return_time(jobs.size(), 0);
int cur = 0;
while(!pq.empty()){
int w = get<2>(pq.top());
int t = get<0>(pq.top());
int s = get<1>(pq.top());
pq.pop();
cur += t;
return_time[w] = cur;
}
int total = 0;
for(int i = 0; i < jobs.size(); i++) total += return_time[i] - jobs[i][0];
return total / jobs.size();
}

#include <string>
#include <vector>
#include <queue>
#include <tuple>
#include <algorithm>
using namespace std;
struct compare
{
bool operator () (tuple<int, int, int> t1, tuple<int, int, int> t2){
if(get<0>(t1) == get<0>(t2) && get<1>(t1) == get<1>(t2)) return get<2>(t1) > get<2>(t2);
else if(get<0>(t1) == get<0>(t2)) return get<1>(t1) > get<1>(t2);
else return get<0>(t1) > get<0>(t2);
}
};
int solution(vector<vector<int>> jobs) {
priority_queue<tuple<int, int, int>, vector<tuple<int, int, int>>, compare> pq;
sort(jobs.begin(), jobs.end(), [](vector<int>& v1, vector<int>& v2){
return v1[0] < v2[0];
});
int cur = 0, total = 0, idx = 0, done = 0;
while(done < jobs.size()){
if(!pq.empty()){
int s = get<1>(pq.top());
int l = get<0>(pq.top());
pq.pop();
cur += l;
total += cur - s;
done++;
while(idx < jobs.size() && jobs[idx][0] <= cur){
pq.push({jobs[idx][1], jobs[idx][0], idx});
idx++;
}
}
else{
cur = jobs[idx][0];
while(idx < jobs.size() && jobs[idx][0] <= cur){
pq.push({jobs[idx][1], jobs[idx][0], idx});
idx++;
}
}
}
return total / jobs.size();
}