Pagini recente » Cod sursa (job #1584820) | Cod sursa (job #1281005) | Cod sursa (job #2262235) | Cod sursa (job #2869281) | Cod sursa (job #2397631)
#include <bits/stdc++.h>
using namespace std;
int D[18][250005];
int log(int n) {
int res = 0;
while (n) {
++res;
n >>= 1;
}
return res;
}
int main() {
ios::sync_with_stdio(false);
ifstream fin("stramosi.in");
ofstream fout("stramosi.out");
int n, q;
fin >> n >> q;
for (int i = 1; i <= n; ++i) {
fin >> D[0][i];
}
int logN = log(n);
for (int j = 1; j < logN; ++j) {
for (int i = 1; i <= n; ++i) {
D[j][i] = D[j-1][D[j-1][i]];
}
}
while (q--) {
int x, p;
fin >> x >> p;
int pwr = 0;
while (p && x) {
if (p & 1) {
x = D[pwr][x];
}
++pwr;
p >>= 1;
}
fout << x << "\n";
}
return 0;
}