Pagini recente » Cod sursa (job #1097900) | Cod sursa (job #1068502) | Cod sursa (job #1159480) | Cod sursa (job #2507652) | Cod sursa (job #1571847)
#include<cstdio>
int ma[250001][21];
int afla(int x, int y)
{int k,i,p,q;
k=1;
q=0;
while(k*2<=y)
{k*=2;
q++;
}
p=y-k;
if(p==0)
return ma[x][q];
else
return afla(ma[x][q],p);
}
int main ()
{freopen ("stramosi.in","r",stdin);
freopen ("stramosi.out","w",stdout);
int n,m,i,j,k,x,q,p;
scanf("%d%d",&n,&k);
q=n;
m=0;
while(q)
{q/=2;
m++;
}
m--;
for(i=1;i<=n;i++)
scanf("%d",&ma[i][0]);
for(j=1;j<=m;j++)
for(i=1;i<=n;i++)
ma[i][j]=ma[ma[i][j-1]][j-1];
for(i=1;i<=k;i++)
{scanf("%d%d",&x,&p);
if(p>n)
printf("0\n");
else
printf("%d\n",afla(x,p));
}
return 0;
}