Cod sursa(job #330522)

Utilizator rumburakrumburak rumburak Data 10 iulie 2009 13:46:38
Problema Stramosi Scor 60
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.59 kb
#include<cstdio>

const int N = (1<<16);
const int L = 16;

int a[L][N],n,m;

void matrice()
{
	int i,j;
	for(j=1;j<=n;++j)
		scanf("%d",&a[0][j]);
	for(i=1;(1<<i)<=n;++i)
		for(j=1;j<=n;++j)
			a[i][j]=a[i-1][a[i-1][j]];
}

int stra(int p,int q)
{
	int i=0;
	if(p>n)
		return 0;
	while(p)
	{
		if(p&1)
			q=a[i][q];
		++i;
		p>>=1;
	}
	return q;
}

int main()
{
	freopen("stramosi.in","r",stdin);
	freopen("stramosi.out","w",stdout);
	int p,q;
	scanf("%d%d",&n,&m);
	matrice();
	while(m--)
	{
		scanf("%d%d",&q,&p);
		printf("%d\n",stra(p,q));
	}
	return 0;
}