Pagini recente » Cod sursa (job #3143036) | Cod sursa (job #2180067) | Cod sursa (job #741966) | Cod sursa (job #2858400) | Cod sursa (job #973515)
Cod sursa(job #973515)
#include <cstdio>
#include <algorithm>
using namespace std;
const int DMAX = 250003;
int D[19][DMAX], l2[DMAX];
int main () {
freopen ("stramosi.in", "r", stdin);
freopen ("stramosi.out", "w", stdout);
int N, M, i, j, x, y;
scanf ("%d%d", &N, &M);
for (i = 1; i <= N; ++i)
scanf ("%d", &D[0][i]), l2[i + 1] = l2[(i + 1) >> 1] + 1;
for (i = 1; (1 << i) <= N; ++i)
for (j = 1; j <= N; ++j)
D[i][j] = D[i - 1][D[i - 1][j]];
while (M--) {
scanf ("%d%d", &x, &y);
while (y) {
x = D[l2[y]][x];
y -= 1 << l2[y];
}
printf ("%d\n", x);
}
}