Cod sursa(job #813373)

Utilizator alex_mircescuAlex Mircescu alex_mircescu Data 15 noiembrie 2012 12:25:41
Problema Stramosi Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.56 kb
#include <stdio.h>
#include <math.h>

#define X 19

long i, j, n, m, s, t, Q, P, v[X][250000];

int main() {
	freopen("stramosi.in", "r", stdin);
	freopen("stramosi.out", "w", stdout);

	scanf("%ld %ld", &n, &m);
	
	for(i = 1; i <= n; ++i)	scanf("%ld", &v[0][i]);

	for (i = 1; i < X; ++i)
		for (j = 1; j <= n; ++j) {
			v[i][j] = v[i - 1][v[i - 1][j]];
		}
	
	for (i = 1; i <= m; ++i)	{
		scanf("%ld %ld", &Q, &P);
		
		while (P && Q) {
			t = 0;
			while (P > (1 << (t + 1))) {
				++t;
			}
			
			Q = v[t][Q];
			P -= 1 << t;
		}
		
		printf("%ld\n", Q);
	}

	return 0;
}