Pagini recente » Cod sursa (job #892350) | Cod sursa (job #753042) | Cod sursa (job #2197898) | Cod sursa (job #2278059) | Cod sursa (job #2397639)
#include <bits/stdc++.h>
using namespace std;
int D[250005][18];
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[i][0];
}
int logN = log(n);
for (int j = 1; j < logN; ++j) {
for (int i = 1; i <= n; ++i) {
D[i][j] = D[D[i][j-1]][j-1];
}
}
while (q--) {
int x, p;
fin >> x >> p;
for (int i = 0; (1<<i) <= p; ++i) {
if ((1<<i) & p) {
x = D[x][i];
if (x == 0) break;
}
}
fout << x << "\n";
}
return 0;
}