Pagini recente » Cod sursa (job #2796174) | Cod sursa (job #2715075) | Cod sursa (job #1573016) | Cod sursa (job #1853913) | Cod sursa (job #1469855)
#include <stdio.h>
#include <stdlib.h>
#define MAXN 250001
int *s[21];
int N, M, P, Q;
int main() {
int i, j, q, p;
FILE *fi = freopen("stramosi.in", "r", stdin);
FILE *fo = freopen("stramosi.out", "w", stdout);
scanf("%d %d", &N, &M);
for (i = 0; i <= 20; i++) {
s[i] = (int*) malloc(sizeof(int) * (N+1));
}
for (i = 1; i <= N; i++) {
scanf("%d", &j);
s[0][i] = j;
}
for (i = 1; i <= 20; i++) {
for (j = 1; j <= N; j++) {
s[i][j] = s[i-1][s[i-1][j]];
}
}
for (i = 0; i < M; i++) {
scanf("%d %d", &q, &p);
for (j = 20; j >= 0; j--) {
if ((1 << j) <= p) {
p -= 1 << j;
q = s[j][q];
}
}
printf("%d\n", q);
}
fclose(fi);
fclose(fo);
return 0;
}