Pagini recente » Cod sursa (job #831638) | Cod sursa (job #1689693) | Cod sursa (job #1966981) | Cod sursa (job #1965521) | Cod sursa (job #1448808)
//0010
#include <iostream>
#include <fstream>
using namespace std;
long eb[20][250050];
int main() {
ifstream fi("stramosi.in");
ofstream fo("stramosi.out");
/* streambuf *sb1, *sb2;
sb1 = fi.rdbuf();
sb2 = fo.rdbuf();
cin.rdbuf(sb1);
cout.rdbuf(sb2);*/
ios::sync_with_stdio(false);
long n, m;
fi >> n >> m;
for (long i = 1; i <= n; i++) {
fi >> eb[0][i];
}
long aux = n, k = 0;
while (aux > 0) {
k++;
aux >>= 1;
}
for (long i = 0; i < k; i++) {
eb[i][0] = 0;
}
for (long i = 1; i < k; i++) {
for (long j = 1; j <= n; j++) {
eb[i][j] = eb[i - 1][eb[i - 1][j]];
}
}
for (long w = 1; w <= m; w++) {
long p = 0, q = 0;
fi >> q >> p;
int v[20], kp = 0;
while (p > 0) {
v[kp] = p % 2;
p >>= 1;
kp++;
}
while (kp > 0) {
kp--;
if (v[kp] == 1) {
q = eb[kp][q];
}
}
fo << q << "\n";
}
return 0;
}