Pagini recente » Cod sursa (job #1166841) | Cod sursa (job #263020) | Cod sursa (job #1883229) | Cod sursa (job #1294921) | Cod sursa (job #3301717)
#include <iostream>
using namespace std;
const int logmax=17;
#define NMAX 250001
int n, m;
int dp[logmax+1][NMAX];
int main(){
#ifdef LOCAL
ios_base::sync_with_stdio(false);
cin.tie(nullptr);
cout.tie(nullptr);
#endif
freopen("stramosi.in", "r", stdin);
freopen("stramosi.out", "w", stdout);
cin>>n>>m;
for (int i=1; i<=n; ++i){
cin>>dp[0][i];
}
for (int l=1; l<=logmax; ++l){
for (int i=1; i<=n; ++i){
dp[l][i]=dp[l-1][dp[l-1][i]];
}
}
for (int i=1; i<=m; ++i){
int nod, dist;
cin>>nod>>dist;
int cr=nod;
for (int p2=logmax; p2>=0; --p2){
if ((1<<p2)<=dist){
dist-=(1<<p2);
cr=dp[p2][cr];
}
}
cout<<cr<<"\n";
}
return 0;
}