Pagini recente » Cod sursa (job #1050827) | Cod sursa (job #155925) | Cod sursa (job #2825873) | Cod sursa (job #1774702) | Cod sursa (job #61044)
Cod sursa(job #61044)
#include <stdio.h>
#define NMAX 250001
int N, M, P, Q;
int a[20][NMAX];
int main() {
FILE *fi = freopen("stramosi.in", "r", stdin);
FILE *fo = freopen("stramosi.out", "w", stdout);
int i, j, n, bit;
scanf("%d%d", &N, &M);
for (i = 1; i <= N; ++i)
scanf("%d", &a[1][i]);
for (i = 2; i < 20; ++i)
for (j = 1; j <= N; ++j)
a[i][j] = a[i-1][a[i-1][j]];
for (i = 0; i < M; ++i) {
scanf("%d%d", &Q, &P);
for (n = 1; P>>n; ++n)
;
for (--n, bit = (1<<n)-1; P; --n, bit >>= 1) {
if ((P>>n)&1) {
Q = a[n+1][Q];
P &= bit;
}
}
printf("%d\n", Q);
}
return 0;
}