[백준] 1966번 프린터 큐 C++

semi·2022년 8월 17일
0

coding test

목록 보기
32/57

https://www.acmicpc.net/problem/1966

#include <iostream>
#include <vector>
#include <deque>
#include <algorithm>
using namespace std;

int main(void)
{
	int T, n, m;
	cin >> T;
	for (int t = 0; t < T; t++)
	{
		cin >> n >> m;
		deque<pair<int, int>> dq;
		vector<int> max_num;
		for (int i = 0; i < n; i++)
		{
			int tmp;
			cin >> tmp;
			dq.push_back({ tmp, i });
			max_num.push_back(tmp);
		}
		sort(max_num.begin(), max_num.end(), greater<>());
		int cur_idx = 0;
		while (!dq.empty())
		{
			if (dq.front().first == max_num[cur_idx])
			{
				if (dq.front().second == m)
				{
					cout << cur_idx + 1<<endl;
					break;
				}
				dq.pop_front();
				cur_idx++;
			}
			else
			{
				pair<int, int> tmp = dq.front();
				dq.pop_front();
				dq.push_back(tmp);
			}
		}
	}
	return 0;
}

0개의 댓글