Pagini recente » Istoria paginii utilizator/gicur | Monitorul de evaluare | Statistici Dancau Sebastian (Ssebi1) | Cod sursa (job #1008039) | Cod sursa (job #778850)
Cod sursa(job #778850)
#include <cstdio>
#include <math.h>
int a[10][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*pow(2,pas);
for(j=0; pas>-1; --pas)
if(j+(1<<pas)<p+1)
q=a[pas+1][q],j+=(1<<pas);
printf("%d\n",q);
}
return 0;
}