Pagini recente » Cod sursa (job #2084571) | Cod sursa (job #1784116) | Cod sursa (job #1860881) | Istoria paginii runda/lot2006z2 | Cod sursa (job #977665)
Cod sursa(job #977665)
#include<cstdio>
#define NM 250100
#define LM 20
using namespace std;
int a,b,n,m,t,D[NM][LM],i,lo[NM],j;
int ans(int k,int x)
{
if(k>n) return 0;
while(k)
{
t=lo[k];
x=D[x][t];
k-=(1<<t);
}
return x;
}
int main ()
{
freopen("stramosi.in","r",stdin);
freopen("stramosi.out","w",stdout);
scanf("%d%d",&n,&m);
for(i=1;i<=n;++i)
scanf("%d",&D[i][0]);
for(i=2;i<=n;++i)
lo[i]=lo[(i>>1)]+1;
for(j=1;(1<<j)<=n;++j)
for(i=1;i<=n;++i)
D[i][j]=D[D[i][j-1]][j-1];
for(i=1;i<=m;++i)
{
scanf("%d%d",&a,&b);
printf("%d\n",ans(b,a));
}
return 0;
}