Pagini recente » Cod sursa (job #3152651) | Cod sursa (job #3294526) | Cod sursa (job #3244532) | Cod sursa (job #872373) | Cod sursa (job #3291460)
#include <iostream>
using namespace std;
#define NMAX 250001
#define LOGMAX 18
int dp[LOGMAX][NMAX];
int n, q;
int main(){
ios::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
freopen("stramosi.in", "r", stdin);
freopen("stramosi.out", "w", stdout);
cin>>n>>q;
for (int i=1; i<=n; ++i){
cin>>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]];
}
}
while (q--){
int x, y;
cin>>x>>y;
int curr=x;
for (int k=0; (1<<k)<=y; ++k){
if ((1<<k)&y){
curr=dp[k][curr];
}
}
cout<<curr<<"\n";
}
return 0;
}