Cod sursa(job #639683)

Utilizator alutzuAlexandru Stoica alutzu Data 23 noiembrie 2011 19:37:18
Problema Stramosi Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.67 kb
#include<cstdio>

int x[250001][18];

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

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