Pagini recente » Cod sursa (job #2016788) | Cod sursa (job #1771876) | Cod sursa (job #2239718) | Cod sursa (job #2413718) | Cod sursa (job #778855)
Cod sursa(job #778855)
#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;
}
for(pas=0; (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 (pas<p+1)
pas=pas*(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;
}