Cod sursa(job #639681)

Utilizator joli94Apostol Adrian Alexandru joli94 Data 23 noiembrie 2011 19:36:08
Problema Stramosi Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.64 kb
#include<cstdio>

int n , m , p , q , a[18][250001];

int stramos(int x , int lung)
{
	int i = 0;
	
	while ( lung != 0 )
	{
		if ( lung % 2 != 0 ) x = a[i][x];
		lung /= 2;
		++i;
	}
	return x;
}

int main()
{
	
	freopen ( "stramosi.in" , "r" , stdin );
	freopen ( "stramosi.out" , "w" , stdout );
	
	scanf("%d%d" , &n , &m );
	
	for (int j=1 ; j<=n ; ++j )
		scanf ("%d" , &a[0][j]);
	
	for (int i=1 ; i<=n ; ++i )
	{
		for ( int j = 1 ; j <= n ; ++j )
			a[i][j] = a[i-1][a[i-1][j]];
	}

	for (int i = 1 ; i <= m ; ++ i )
	{
		scanf ( "%d %d" , &q , &p );
		printf ("%d\n" , stramos(q,p));
	}		
	
	return 0;
}