1966 - 프린터 큐

solution

code

#include <iostream>
#include <deque>
#include <queue>
#include <vector>

using namespace std;

int main()
{
    int testC, N, M;
    cin >> testC;
    for(int count = 0; count < testC; count++)
    {
        cin >> N;
        cin >> M;
        deque<pair<int, int>> print;
        priority_queue<int> pq;
        int prio;
        for(int i = 0; i < N; i++)
        {
            scanf("%d", &prio);
            print.push_back(make_pair(prio, i));
            pq.push(prio);
        }

        pair<int, int> p;
        int order = 1;
        while(1)
        {
            if(print.front().first != pq.top())
            {
                p = print.front();
                print.pop_front();
                print.push_back(p);
            }
            else
            {
                if(print.front().second == M) break;
                print.pop_front();
                pq.pop();
                order++;
            }
        }
        cout << order << endl;
    }
    return 0;
}

ref

C++ STL priority_queue 우선순위 큐 사용법

1966번: 프린터 큐