Pagini recente » Cod sursa (job #3125908) | Cod sursa (job #627998) | Cod sursa (job #2347720) | Cod sursa (job #1654195) | Cod sursa (job #779013)
Cod sursa(job #779013)
#include <cstdio>
int a[20][250002];
int main()
{
int n=0,m=0,i=0,j=0,p=0,q=0,pas=1;
freopen("stramosi.in","r",stdin);
freopen("stramosi.out","w",stdout);
scanf("%d%d",&n,&m);
for(i=1;i<=n;++i)
{
scanf("%d",&a[1][i]);
a[0][i]=i;
}
while ((1<<pas)<n+1)
++pas;
for(i=2; i<pas+1; ++i)
for(j=1; j<n+1; ++j)
a[i][j]=a[i-1][a[i-1][j]];
for(i=0; i<m; ++i)
{
scanf("%d%d",&q,&p);
pas=1;
while ((1<<pas)<p+1)
++pas;
for(j=0; pas>-1; --pas)
if(j+(1<<pas)<p+1)
{
q=a[pas+1][q];
j=j+(1<<pas);
}
printf("%d\n",q);
}
return 0;
}