Pagini recente » Cod sursa (job #1154254) | Cod sursa (job #3163772) | Cod sursa (job #1567957) | Cod sursa (job #2633413) | Cod sursa (job #1448805)
//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;
cin >> n >> m;
for (long i = 1; i <= n; i++) {
cin >> 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;
cin >> 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];
}
}
cout << q << "\n";
}
return 0;
}