Cod sursa(job #977667)

Utilizator Kira96Denis Mita Kira96 Data 26 iulie 2013 13:00:42
Problema Stramosi Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.59 kb
#include<cstdio>
#define NM 250100
#define LM 21
using namespace std;
int a,b,n,m,t,D[LM][NM],i,lo[NM],j;
int ans(int k,int x)
{
	if(k>n) return 0;
	while(k)
	{
		t=lo[k];
		x=D[t][x];
		k-=(1<<t);
	}
	return x;
}
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",&D[0][i]);
	for(i=2;i<=n;++i)
		lo[i]=lo[(i>>1)]+1;
	for(j=1;(1<<j)<=n;++j)
		for(i=1;i<=n;++i)
			D[j][i]=D[j-1][D[j-1][i]];
	for(i=1;i<=m;++i)
	{
		scanf("%d%d",&a,&b);
		printf("%d\n",ans(b,a));
	}
	return 0;
}