Pagini recente » Cod sursa (job #308925) | Cod sursa (job #170042) | Cod sursa (job #1864133) | Cod sursa (job #2810939) | Cod sursa (job #2339739)
#include <iostream>
#include <cstdio>
using namespace std;
int n,m;
int P[20][250050];
void citire()
{
scanf("%d %d",&n,&m);
for(int i=1;i<=n;i++)
{
scanf("%d",&P[0][i]);
}
}
void DP()
{
for(int i=1;i<20;i++)
{
for(int k=1;k<=n;k++)
P[i][k]=P[i-1][P[i-1][k]];
}
}
int sol(int x,int g)
{
int t=x;
int p=1;
int cnt=0;
while(p<=g)
{
if(g&p)
t=P[cnt][t];
p<<=1;
cnt++;
}
return t;
}
int main()
{
freopen("stramosi.in","r",stdin);
freopen("stramosi.out","w",stdout);
ios::sync_with_stdio(false);
citire();
DP();
for(int i=0;i<m;i++)
{
int a,b;
scanf("%d %d",&a,&b);
printf("%d\n",sol(a,b));
}
return 0;
}