Cod sursa(job #342186)

Utilizator vdobrotaDobrota Valentin Eugen vdobrota Data 20 august 2009 19:05:20
Problema Stramosi Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.52 kb
#include<stdio.h>
#define dim 250005

int main()
{
	freopen("stramosi.in","r",stdin);
	freopen("stramosi.out","w",stdout);
	int a[20][dim],n,m,i,j,k,p,q;

	a[0][0]=0;
	scanf("%d%d",&n,&m);
	for (i=1;i<=n;i++) {
		scanf("%d",&j);
		a[0][i]=j;
	}

	for (j=1; j<20; j++) {
		a[j][0]=0;
		for (i=1;i<=n;i++)
			a[j][i]=a[j-1][a[j-1][i]];
		}
	while (m--)
	{
		scanf("%d%d",&q,&p);
		for(j=20;j>=0;j--)
					if(p&(1<<j))
					{
					q=a[j][q];
					p-=1<<j;
					}
		printf("%d\n",q);
	}
	return 0;
}