Pagini recente » Cod sursa (job #1929485) | Cod sursa (job #1649975) | Cod sursa (job #1870670) | Cod sursa (job #2582319) | Cod sursa (job #3304778)
#include <fstream>
#include <cmath>
using namespace std;
ifstream cin("stramosi.in");
ofstream cout("stramosi.out");
int n, m, p, q, S;
int t[250002], s[250002][20];
int main() {
cin>>n>>m;
for(int i=1;i<=n;i++){
cin>>t[i];
s[i][0]=t[i];
}
for(int j=1;j<=ceil(log2(n));j++){
for(int i=1;i<=n;i++){
s[i][j]=s[s[i][j-1]][j-1];
}
}
for(int i=1;i<=m;i++){
cin>>p>>q;//stramosul lui p la dist q
S=p;
for(int k=ceil(log2(n));k>=0;k--){
if(q&(1<<k)){
S=s[S][k];
}
}
cout<<S<<"\n";
}
}