P2776 [SDOI2007]小组队列 题解

水于省选前夕,rp++。

description:

操作一个有依赖的队列。

solution:

直接模拟即可。

建两种队列,一个是题目给定的队列,另一个是分组。

code:

#include<cstdio>
#include<queue>
using namespace std;
int a[1000005];
queue<int>q;
queue<int>qu[305];
int main()
{
	int n,m;
	scanf("%d%d",&n,&m);
	for(int i=0;i<n;i++)
	{
		scanf("%d",&a[i]);
	} 
	int T;
	scanf("%d",&T);
	char s[10];
	while(T--)
	{
        int x;
		scanf("%s",s);
		if(s[1]=='u')
		{
			scanf("%d",&x);
			if(qu[a[x]].size()==0)
			{
				q.push(a[x]);
			}
			qu[a[x]].push(x);
		}
		else
		{
			int tmp=q.front();
			printf("%d\n",qu[tmp].front());
			qu[tmp].pop();
			if(qu[tmp].empty())q.pop();
		}
	} 
	return 0;
}