Cod sursa(job #723806)

Utilizator avram_florinavram florin constantin avram_florin Data 25 martie 2012 21:04:59
Problema Stramosi Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.68 kb
#include<fstream>
#include<cstdio>

using namespace std;

const int MaxN = 250001;
const int MaxL = 21;

const char InFile[] = "stramosi.in";
const char OutFile[] = "stramosi.out";

int N,M,DP[MaxL][MaxN];

int main()
{
	ifstream fin( InFile );
	ofstream fout( OutFile );
	fin >> N >> M;
	int i,j,Q,P;
	for( i = 1 ; i <= N ; ++i )
		fin >> DP[0][i];
	for( i = 1 ; i < MaxL ; ++i )
		for( j = 1 ; j <= N ; ++j )
			DP[i][j] = DP[i-1][DP[i-1][j]];
	for( i = 1 ; i <= M ; ++i )
		{
			fin >> Q >> P;
			j = 0;
			while( P )
				{
					if( P & 1 )
						Q = DP[j][Q];
					++j;
					P >>= 1;
				}
			fout << Q << '\n';
		}
	fin.close();fout.close();
	return 0;
}