Pagini recente » Cod sursa (job #1805039) | Cod sursa (job #2727574) | Cod sursa (job #831827) | Cod sursa (job #1641099) | Cod sursa (job #601171)
Cod sursa(job #601171)
#include <cstdio>
#define MAXN 250005
#define LGN 20
int main(){
freopen("stramosi.in", "r", stdin);
freopen("stramosi.out", "w", stdout);
int N, M, i, j, P, Q, p, lg[MAXN];
static int F[LGN][MAXN];
scanf("%d%d", &N, &M);
for(i=1; i<=N; i++)
scanf("%d", F[0]+i);
for(i=1; (1<<i)<=N; i++)
for(j=1; j<=N; j++)
F[i][j]=F[i-1][F[i-1][j]];
lg[1]=0;
for(i=2; i<=N; i++)
lg[i]=lg[i>>1]+1;
while(M--){
scanf("%d%d", &Q, &P);
i=lg[P]; j=Q; p=0;
while(p<P){
j=F[i][j];
p+=1<<i;
i=lg[P-p];
}
printf("%d\n", j);
}
return 0;
}