Cod sursa(job #369966)

Utilizator kyrkDragos Dumitrescu kyrk Data 29 noiembrie 2009 21:43:04
Problema Stramosi Scor 100
Compilator c Status done
Runda Arhiva de probleme Marime 0.48 kb
#include <stdio.h>

int n, m, v[20][250010];

int main()
{
	freopen("stramosi.in","r",stdin);
	freopen("stramosi.out","w",stdout);
	scanf("%d %d",&n,&m);
	int i, k, j, cn=n;
	for (i=1; i<=n; i++) scanf("%d",&v[0][i]);
	for (k=0; cn; k++) cn/=2;
	for (i=1; i<=k; i++)
		for (j=1; j<=n; j++) 
			if (v[i-1][j])
				v[i][j]=v[i-1][v[i-1][j]];
	int p, q;
	while (m--)
	{
		scanf("%d %d",&q,&p);
		j=0;
		while (q && p) 
		{
			if (p%2)
				q=v[j][q];
			j++;
			p/=2;
		}
		printf("%d\n",q);
	}
}