Cod sursa(job #781271)

Utilizator ELHoriaHoria Cretescu ELHoria Data 24 august 2012 00:48:01
Problema Stramosi Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.59 kb
#include <cstdio>

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

int main()
{
	freopen("stramosi.in","r",stdin);
	freopen("stramosi.out","w",stdout);
	scanf("%d %d",&N,&M);
	for(int i = 1;i <= N;++i) {
		scanf("%d",&A[0][i]);
		lg[i + 1] = lg[(i + 1)>>1] + 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(int Q , P;M;M--)
	{
		scanf("%d %d",&Q,&P);
		for(int l = lg[P];P;) {
			Q = A[l][Q];
			P -= (1<<l);
			l = lg[P];
		}

		printf("%d\n",Q);
	}
	return 0;
}