Cod sursa(job #641670)

Utilizator ELHoriaHoria Cretescu ELHoria Data 29 noiembrie 2011 00:45:05
Problema Stramosi Scor 80
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.53 kb
#include <fstream>

using namespace std;

ifstream fin("stramosi.in");
ofstream fout("stramosi.out");

const int logmax = 18 , maxn = 250150;
int A[logmax][maxn] , lg[maxn] , N , M , Q , P;

int main()
{
	fin>>N>>M;
	for(int i=1;i<=N;++i)
		fin>>A[0][i] , lg[i+1] = lg[(i+1)/2] + 1;
	lg[N+1] = 0;
	for(int j = 1;j<logmax;++j)
		for(int i = 1;i<=N;++i)
			A[j][i] = A[j-1][A[j-1][i]];

	for(;M;M--)
	{
		fin>>Q>>P;
		for(int l=lg[P];P;)
		Q = A[l][Q] , P-=(1<<l) , l = lg[P];

		fout<<Q<<'\n';
	}
	return 0;
}