比赛 20140307 评测结果 AAAATEEEEE
题目名称 Bessie洗牌法 最终得分 40
用户昵称 请叫我“读者” 运行时间 2.751 s
代码语言 C++ 内存使用 0.32 MiB
提交时间 2014-03-07 21:54:54
显示代码纯文本
#include<iostream>
#include<deque>
#include<cstdlib>
#include<cstdio>
using namespace std;
deque<int>p,card,Ans;
int main()
{
	int i,j,n,m,q,pos,t;
	freopen("shufflegold.in","r",stdin);
	freopen("shufflegold.out","w",stdout);
	ios::sync_with_stdio(false);
	cin>>n>>m>>q;
	//scanf("%d%d",&n,&m,&q);
	p.resize(m+1);
	card.resize(n);
	
	for(i=0;i<m;i++)
	{
		cin>>p[i];
		//scanf("%d",&p[i]);
		p[i]--;
	}
	for(i=0;i<n;i++)
		card[i]=i+1;
	while(card.size()>=m)
	{
		/*for(i=0;i<m;i++)
		{
			t=card[i];
			card[i]=card[p[i]];      
			card[p[i]]=t;
		}*/
		deque<int>use(m);
		for(i=0;i<m;i++)
			use[i]=card[i];
		for(i=0;i<m;i++)
			card[p[i]]=use[i];
		Ans.push_front(*card.begin());
		card.pop_front();
		
	}
	while(card.size()>0)
	{
		Ans.push_front(*card.begin());
		card.pop_front();
	}
	for(i=0;i<q;i++)
	{
		cin>>pos;
		//scanf("%d",&pos);
		cout<<Ans[pos-1]<<endl;
		//printf("%d\n",Ans[pos-1]);
	}
}