Cod sursa(job #686545)

Utilizator CBogdanCiobanu Bogdan CBogdan Data 21 februarie 2012 18:21:59
Problema Stramosi Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.6 kb
#include<cstdio>
using namespace std;

int N,M,Q,P,S,i,j,LG[250010],stra[20][250010];

void read(),solve();

int main()
{
	read();
	solve();
	
	return 0;
}

void read()
{
	freopen("stramosi.in","r",stdin);
	freopen("stramosi.out","w",stdout);
	scanf("%d%d",&N,&M);
	scanf("%d",&stra[0][1]);
	for(i=2;i<=N;i++)
	{
		scanf("%d",&stra[0][i]);
		LG[i]=LG[i>>1]+1;
	}
	for(i=1;(1<<i)<=N;i++)
	{
		for(j=1;j<=N;j++)
		{
			stra[i][j]=stra[i-1][stra[i-1][j]];
		}
	}
	
}

void solve()
{
	for(;M--;)
	{
		scanf("%d%d",&Q,&P);
		while(P)
		{
			j=LG[P];
			Q=stra[j][Q];
			S=Q;
			P-=(1<<j);
		}
		printf("%d\n",S);
	}
}