Pagini recente » Cod sursa (job #1808735) | Istoria paginii runda/odfjwao352i5h/clasament | Cod sursa (job #42753) | Cod sursa (job #1885619) | Cod sursa (job #307842)
Cod sursa(job #307842)
#include <stdio.h>
#define N 250005
int e[20][N],n,m,v[N];
void read()
{
scanf("%d%d",&n,&m);
int i;
for (i=1; i<=n; i++)
scanf("%d",&v[i]);
}
void precalculate()
{
int i,j;
for (i=1; i<=n; i++)
e[0][i]=v[i];
i=0;
for(i=1 ; 1<<i <= n ; ++i)
for(j=1 ; j<=n ; ++j)
e[i][j]=e[i-1][e[i-1][j]];
}
int question(int q,int p)
{
int i=0;
while(p)
{
if (p%2==1)
q=e[i][q];
p/=2;
//x>>1; // x/=2
++i;
}
return q;
}
void solve()
{
int i,p,q;
for (i=1; i<=m; i++)
{
scanf("%d%d",&q,&p);
printf("%d\n",question(q,p));
}
}
int main()
{
freopen("stramosi.in","r",stdin);
freopen("stramosi.out","w",stdout);
read();
precalculate();
solve();
return 0;
}