306

#include <iostream>
#include <map>
#include <vector>
#include <string>
#include <stdio.h>

/*

10
4 5 3 7 2 8 1 6 10 9
1 Hello Bob
1995 CERC
0
0

Sample Output

BolHeol  b
C RCE

 */
using namespace std;

int arr[202];
vector<char> c_arr[202];
char s[202];


int cycle(int pos)
{
	int org=pos;
	int init=arr[pos];
	int cnt=1;
	c_arr[pos-1].clear();
	c_arr[org-1].push_back(s[arr[pos]]);

	pos=arr[pos];

	while(init!=arr[pos])
	{
		c_arr[org-1].push_back(s[arr[pos]]);
		pos=arr[pos];
		cnt++;
	}

	return cnt;
}

int main()
{
	int n,k,len;
	string str;
	int pos_of_cycle;

	while(cin>>n)
	{
		if(n==0)
		break;
		for(int i=1;i<=n;i++)
		{
			cin>>arr[i];
		}
		while(cin>>k)
		{
			getchar();
			if(k==0)
			break;

			getline(cin,str);

			for(int i=0;i<str.size();i++)
			{
				s[i+1]=str[i];
			}
			for(int i=(str.size()+1);i<=n;i++)
				s[i]=' ';
			for(int pos=1;pos<=n;pos++)
			{
				len = cycle(pos);
				pos_of_cycle=len-1-(k%len);
				cout<<c_arr[pos-1][pos_of_cycle];

			}
			cout<<"\n";
		}
		cout<<"\n";

	}

	return 0;
}

 

Leave a Reply

Your email address will not be published. Required fields are marked *