Cod sursa(job #479525)

Utilizator andrei.dAndrei Diaconeasa andrei.d Data 24 august 2010 13:06:01
Problema Stramosi Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.69 kb
#include <cstdio>

#define file_in "stramosi.in"
#define file_out "stramosi.out"

int n,m;
int s[19][250993];

void citire()
{
	freopen(file_in,"r",stdin);
	freopen(file_out,"w",stdout);
	
	scanf("%d %d", &n, &m);
	
	for (int i=1;i<=n;++i)
		 scanf("%d", &s[0][i]);
}

void prep()
{
	for (int i=1;i<=18;++i)
		 for (int j=1;j<=n;++j)
			   s[i][j]=s[i-1][s[i-1][j]];
}

void solve()
{
	int p,q,i;
	prep();
	while(m--)
	{
		scanf("%d %d", &q, &p);
		while(p)
		{
			i=0;
			while(i<=(p>>1)) i++;
			i--;
			p-=(1<<i);
			q=s[i][q];
		}
				printf("%d\n", q);
	}
	
}

int main()
{
	citire();
	solve();
	
	fclose(stdin);
	fclose(stdout);
	
	return 0;
	
}