Cod sursa(job #879236)

Utilizator iarbaCrestez Paul iarba Data 15 februarie 2013 09:46:14
Problema Stramosi Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.55 kb
#include <cstdio>
using namespace std;
long n,i,j,m,a[20][250001],p,q,max,putere;
int main()
{
	freopen("stramosi.in","r",stdin);
	freopen("stramosi.out","w",stdout);
	scanf("%ld%ld",&n,&m);
	for(i=1;i<=n;i++){scanf("%ld",&a[1][i]);}
	for(i=2;i<=18;i++){
		p=1;for(j=1;j<=i;j++){p*=2;}
		for(j=1;j<=n;j++){a[i][j]=a[i-1][a[i-1][j]];}
					  }
	for(i=1;i<=m;i++){
		scanf("%ld%ld",&p,&q);
		max=262144;putere=19;
		while((p)&&(q)){
		while(q<max){max/=2;putere--;}
		p=a[putere][p];q-=max;
					   }
		printf("%ld ",p);
					 }
return 0;
}