Pagini recente » Cod sursa (job #15621) | Cod sursa (job #2115502) | Cod sursa (job #323895) | Cod sursa (job #1304916) | Cod sursa (job #1289795)
#include <stdio.h>
#define NMax 250010
#define LogNMax 19
const char IN[] = "stramosi.in", OUT[] = "stramosi.out";
int N, M;
int P[LogNMax][NMax];
int search( int x, int p ) {
int step;
for ( int i = 0; i <= 18; ++ i )
if ( ( 1 << i ) & p )
x = P[i][x];
return x;
}
int main() {
freopen(IN, "r", stdin);
freopen(OUT, "w", stdout);
scanf("%d%d", &N, &M);
for ( int i = 1; i <= N; ++ i )
scanf("%d", &P[0][i]);
for ( int j = 1; j < LogNMax; ++ j )
for ( int i = 1; i <= N; ++ i )
P[j][i] = P[j - 1][P[j - 1][i]];
for ( int i = 1; i <= M; ++ i ) {
int x, p;
scanf("%d%d", &x, &p);
printf("%d\n", search(x, p));
}
return 0;
}