less than 1 minute read

#include <string>
#include <vector>
#include <queue>

using namespace std;

int solution(vector<int> priorities, int location) {
    int answer = 0;
    int cnt = 0;
    queue<pair<int,int>> q;
    priority_queue<int> pq;
    
    for (int i = 0; i < priorities.size(); i++) {
        q.push(make_pair(i, priorities[i]));
        pq.push(priorities[i]);
    }
    
    while (!q.empty()) {
        int index = q.front().first;
        int priority = q.front().second;
        q.pop();
        
        if (pq.top() == priority) {
            pq.pop();
            cnt++;
            if (index == location) {
                answer = cnt;
                return answer;
            }
        }
        else {
            q.push(make_pair(index, priority));
        }
    }
}