Cod sursa(job #467193)

Utilizator borsoszalanBorsos Zalan borsoszalan Data 28 iunie 2010 12:48:16
Problema Stramosi Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.49 kb
#include <stdio.h>
#define nmax 250001
int a[nmax][21],n,m,p,q,i,j,pow, val;

int main()
{
	freopen("stramosi.in", "r", stdin);
	freopen("stramosi.out", "w", stdout);
	scanf("%d %d", &n, &m);
	for(i=1;i<=n;i++)
		scanf("%d", &a[i][0]);
	for(i=1;i<=n;i++)
		for(j=1;j<17;j++)
			a[i][j]=a[a[i][j-1]][j-1];
	for(i=1;i<=m;i++)
	{
		scanf("%d %d", &p, &q);
		while(q>0)
		{
			pow=0;
			val=1;
			while(2*val<=q)
			{val*=2;pow++;}
			q-=val;
			p=a[p][pow];
		}
		printf("%d\n", p);
	}

	return 0;
}