Pagini recente » Cod sursa (job #3233764) | Cod sursa (job #2648069) | Cod sursa (job #1289899) | Cod sursa (job #138265) | Cod sursa (job #2738984)
#include <fstream>
#include <algorithm>
using namespace std;
//*
ifstream cin("stramosi.in");
ofstream cout("stramosi.out");
//*/
const int MAXN = 250002;
int n, m, p, q;
int d[MAXN][20];
int pb[20];
int main()
{
cin >> n >> m;
for(int i=1; i<=n; i++) {
cin >> d[i][0];
for(int j=0; d[ d[i][j] ][j] > 0; j++)
d[i][j+1] = d[ d[i][j] ][j];
}
for(int i=1; i<=m; i++) {
cin >> q >> p;
int cnt = 1, crn=q, j=1;
while(p > 0) {
if(p&1) {
pb[cnt] = j-1;
cnt++;
}
j++;
p >>= 1;
}
cnt--;
while(cnt > 0) {
crn = d[crn][pb[cnt]];
cnt--;
}
cout << crn << "\n";
}
return 0;
}