Pagini recente » Cod sursa (job #1082523) | Cod sursa (job #2248817) | Cod sursa (job #3180973) | Cod sursa (job #3177960) | Cod sursa (job #1415826)
#include <cstdio>
#define NMAX 250007
using namespace std;
int Dp[19][NMAX];
int main(){
int n, A, B, m;
freopen("stramosi.in", "r", stdin);
freopen("stramosi.out", "w", stdout);
scanf("%d %d", &n, &m);
for(int i = 1; i <= n ; ++i)
scanf("%d", &Dp[0][i]);
for(int i = 1; (1 << i) <= n; ++i)
for(int j = 1; j <= n; ++ j)
Dp[i][j] = Dp[i - 1][Dp[i - 1][j]];
for(int i = 1; i <= m; ++ i){
scanf("%d %d", &A, &B);
for(int j = 0; (1 << j) <= B; ++j)
if((1 << j) & B)
A = Dp[j][A];
printf("%d\n", A);
}
return 0;
}