Cod sursa(job #966454)

Utilizator dragangabrielDragan Andrei Gabriel dragangabriel Data 25 iunie 2013 22:05:50
Problema Stramosi Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.49 kb
#include<cstdio>
#include<cmath>
using namespace std;
int m,n,i,j,k,x,y,v[20][250001];

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",&v[0][i]);
	k=log2(n);
	for (i=1;i<=k;i++)
		for (j=1;j<=n;j++)
			v[i][j]=v[i-1][v[i-1][j]];
	for (i=1;i<=m;i++)
	{
		scanf("%d %d",&x,&y);
		k=0;
		while (y>0)
		{
			if (y%2!=0) x=v[k][x];
			k++;y/=2;
		}
		printf("%d\n",x);
	}
	return 0;
}