【习题 5-7 UVA - 12100】Printer Queue

【链接】 我是链接,点我呀:)
【题意】

在这里输入题意

【题解】

用队列和multiset就能完成模拟

【代码】

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

int n, m;
queue <pair<int,int> > dl;
multiset <int,greater<int> > mset;

int main()
{
	//freopen("F:\\rush.txt", "r", stdin);
	int T;
	scanf("%d", &T);
	while (T--)
	{
		mset.clear();
		while (!dl.empty()) dl.pop();
		scanf("%d%d", &n, &m);
		for (int i = 0; i < n; i++)
		{
			int x;
			scanf("%d", &x);
			dl.push(make_pair(x,i));
			mset.insert(x);
		}
		int t = 0;
		for (int i = 0;i < n;i++)
		{ 
			while (dl.front().first != (*mset.begin()) )
			{
				dl.push(dl.front());
				dl.pop();
			}
			mset.erase(mset.begin());
			t++;
			if (dl.front().second == m)
			{
				printf("%d\n", t);
				break;
			}
			dl.pop();
		}
	}
	return 0;
}
posted @ 2017-10-15 10:52  AWCXV  阅读(108)  评论(0编辑  收藏  举报