Cod sursa(job #639699)

Utilizator alutzuAlexandru Stoica alutzu Data 23 noiembrie 2011 19:52:33
Problema Stramosi Scor 80
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.84 kb
#include<cstdio>
#include<fstream>
using namespace std;
int x[18][250001];

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 ( )
{
	ifstream f("stramosi.in");
	ofstream g("stramosi.out");
//	freopen ( "stramosi.in", "r" , stdin ) ;
//	freopen ( "stramosi.out", "w", stdout ) ;
	
	int n , m , i , j ;
	int p , q;
	
	f>>n>>m;
	//scanf ( "%d%d", & n , & m ) ;
	
	for ( i = 1 ; i <= n ; ++ i )
		f>>x[0][i];
		//scanf ( "%d", & x[0][i] ) ;
	
	for ( i = 1 ; (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 )
	{
		f>>p>>q;
		//scanf ( "%d%d", & p , & q ) ;
		g<<stramos(p,q)<<"\n";
		//printf ( "%d\n" , stramos ( p , q ) ) ;
	}
	
	return 0 ;
}