Pagini recente » Cod sursa (job #594865) | Cod sursa (job #2143238) | Cod sursa (job #2947049) | Cod sursa (job #143517) | Cod sursa (job #487974)
Cod sursa(job #487974)
#include <cstdio>
int n, m, a[18][1 << 18];
void citire () {
freopen ("stramosi.in", "r", stdin);
freopen ("stramosi.out", "w", stdout);
scanf ("%d%d", &n, &m);
for (int i = 1; i <= n; ++i) {
scanf ("%d", &a[0][i]);
}
}
void construire () {
for (int i = 1; i <= 18; ++i) {
for (int j = 1; j <= n; ++j) {
a[i][j] = a[i - 1][a[i - 1][j]];
}
}
}
int stramosi (int p, int q) {
for (int i = 0; p; ++i, p >>= 1) {
if (p & 1) {
q = a[i][q];
}
}
return q;
}
void exe () {
for (int i = 1, p, q; i <= m; ++i) {
scanf ("%d%d", &q, &p);
printf ("%d\n", stramosi (p, q));
}
}
int main () {
citire ();
construire ();
exe ();
return 0;
}