Cod sursa(job #239778)

Utilizator ProstuStefan-Alexandru Filip Prostu Data 5 ianuarie 2009 20:27:22
Problema Stramosi Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.48 kb
#include <stdio.h>

int a[18][250001];

int main(void) {
	freopen("stramosi.in","r",stdin);
	freopen("stramosi.out","w",stdout);
	
	int n, m, i, j, x, y;

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

	for (j = 1; (1 << j) <= n; ++j)
		for (i = 1; i <= n; ++i)
			a[j][i] = a[j-1][ a[j-1][i] ];

	for (i = 0; i < m; ++i) {
		scanf(" %d %d", &x, &y);
		for (j = 0; y; ++j, y >>= 1)
			if (y & 1) 
				x = a[j][x];
		printf("%d\n", x);
	}
	
	return 0;
}