Cod sursa(job #293205)

Utilizator radu_voroneanuVoroneanu Radu Stefan radu_voroneanu Data 1 aprilie 2009 08:00:51
Problema Stramosi Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.54 kb
#include <stdio.h>

long a[18][250000];
long n,m,i,p,q,nr,j;

int main()
{
	freopen("stramosi.in","r",stdin);
	freopen("stramosi.out","w",stdout);
	scanf("%ld %ld",&n,&m);
	for (i=1; i<=n; ++i)
		scanf("%ld",&a[0][i]);
	nr=1;
	i=n;
	while (i!=0)
	{
		for (j=1; i<=n; ++j)
			a[nr][j]=a[nr-1][a[nr-1][j]];
		i/=2;
		++nr;
	}
	for (i=1; i<=m; ++i)
	{
		nr=0;
		scanf("%ld %ld",&p,&q);
		while (q && p)
		{
			if (q%2==1)	p=a[nr][p];
			++nr;
			q/=2;
		}
		printf("%ld\n",p);
	}
	fclose(stdin); fclose(stdout);
	return 0;
}