Cod sursa(job #315473)

Utilizator GheorgheMihaiMihai Gheorghe GheorgheMihai Data 15 mai 2009 19:49:19
Problema Stramosi Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.58 kb
#include<stdio.h>
int n,m;
int v[20][250003];

void stramosi()
{
	int i,j;
	for(i=1;(1<<i)<=n;i++)
		for(j=1;j<=n;j++)
			v[i][j]=v[i-1][v[i-1][j]];
}

void read()
{
	freopen("stramosi.in","r",stdin);
	freopen("stramosi.out","w",stdout);
	scanf("%d%d",&n,&m);
	int i;
	for(i=1;i<=n;++i)
		scanf("%d",&v[0][i]);
}

void rez()
{
	int i,q,p,j;
	for(j=1;j<=m;j++)
	{
		scanf("%d%d",&q,&p);//q=b p=a
		i=0;
		while(p)
		{
			if(p&1)
				q=v[i][q];
			++i;
			p=p>>1;
		}
		printf("%d\n",q);
	}
	
}

int main()
{
	read();
	stramosi();
	rez();
	return 0;
}