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

 

1966번: 프린터 큐

문제 여러분도 알다시피 여러분의 프린터 기기는 여러분이 인쇄하고자 하는 문서를 인쇄 명령을 받은 ‘순서대로’, 즉 먼저 요청된 것을 먼저 인쇄한다. 여러 개의 문서가 쌓인다면 Queue 자료구조에 쌓여서 FIFO - First In First Out - 에 따라 인쇄가 되게 된다. 하지만 상근이는 새로운 프린터기 내부 소프트웨어를 개발하였는데, 이 프린터기는 다음과 같은 조건에 따라 인쇄를 하게 된다. 현재 Queue의 가장 앞에 있는 문서의 ‘중요도’를

www.acmicpc.net

 

 

 

#include<bits/stdc++.h>
using namespace std; 

int myq_evaluate(queue<pair<int, int> > Q)	
{
	int siz = Q.size();
	int first_importance = Q.front().second;	
	int now_importance;
	
	for(int i=1; i<siz; i++)
	{
		Q.pop();
		if(Q.front().second > first_importance)
		{
			return 1;
		}
	}
	
	return 0;
}

int main(void)
{
	int t;
	int ans = 1;
	int temp;
	
	scanf("%d", &t);	
	
	for(int i=0; i<t; i++)
	{
		int n, m;	
		ans = 1;
		
		scanf("%d %d", &n, &m);	
		queue<pair<int, int> >q;	
		pair<int, int> temp_front;
		
		for(int j=0; j<n; j++)
		{
			scanf("%d", &temp);
			q.push(make_pair(j, temp));	
		}
		
		
		while(1)
		{
			while(myq_evaluate(q))	
			{
				temp_front = q.front();	
				q.pop();
				q.push(temp_front);
			}
			
			if(q.front().first != m)	
			{
				q.pop();
				ans++;
			}
			else
			{
				break;
			}
		}
		
		printf("%d\n", ans); 
	}
	
	return 0;
}

 

 

#include <iostream>
#include <bits/stdc++.h>
using namespace std;

int main()
{

    int a,b,i,d[100]={0,},cnt=0,f;
    scanf("%d",&f);
    while(f>0)
    {
        priority_queue<pair<int,int>> p;
        scanf("%d %d",&a,&b);
        for(i=0;i<a;i++)
        {
            scanf("%d",&d[i]);
            p.push({d[i],i});
        }
        while(!p.empty())
        {
            cnt++;
            int t=p.top().second;
            if(b==t)
            {
                printf("%d\n",cnt);
                break;
            }

            p.pop();
        }
        f--;
        cnt=0;
    }
    return 0;
}

+ Recent posts