Cod sursa(job #504445)

Utilizator skullLepadat Mihai-Alexandru skull Data 27 noiembrie 2010 18:38:27
Problema Stramosi Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.5 kb
#include<stdio.h>
using namespace std;

int a[21][250005];

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