Pagini recente » Cod sursa (job #1440789) | Cod sursa (job #1328913) | Cod sursa (job #3207021) | Cod sursa (job #3163135) | Cod sursa (job #1148563)
#include <cstdio>
#include <cmath>
using namespace std;
int DP[20][250005];
int N,Q;
int len;
void read()
{
scanf("%d%d",&N,&Q);
len = (int)log2(N);
for(int i = 1 ; i <= N; ++i)
scanf("%d",&DP[0][i]);
}
void dynamic()
{
for(int i = 1; i <= len; ++i)
for(int j = 1; j <= N; ++j)
DP[i][j] = DP[i-1][DP[i-1][j]];
}
void solve()
{
int a,b;
for(int i = 1; i <= Q; ++i)
{
scanf("%d%d",&a,&b);
for(int k = 0; k <= len; ++k)
if((1<<k)&b)
{
a = DP[k][a];
b -= 1<<k;
}
printf("%d\n",a);
}
}
int main()
{
freopen("stramosi.in","r",stdin);
freopen("stramosi.out","w",stdout);
read();
dynamic();
solve();
return 0;
}