Pagini recente » Cod sursa (job #3122575) | Cod sursa (job #446702) | Cod sursa (job #3130072) | Cod sursa (job #4388) | Cod sursa (job #1356303)
#include <cstdio>
using namespace std;
int father[20][250001];
int i,j,n,m,k,p,q;
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",&father[1][i]);
}
for(j=2;j<=18;j++)
{
for(i=1;i<=n;i++)
{
father[j][i]=father[j-1][father[j-1][i]];
}
}
for(i=1;i<=m;i++)
{
scanf("%ld%ld",&q,&p);
j=1;k=1;
while(k<p){j++;k*=2;}
while(p)
{
while(k>p){j--;k/=2;}
q=father[j][q];p-=k;
}
printf("%ld\n",q);
}
return 0;
}