Pagini recente » Cod sursa (job #2794927) | Cod sursa (job #194476)
Cod sursa(job #194476)
#include<stdio.h>
#define N 250005
long n,m,v[N][18],a[N],p,q,l,i,j;
int main(){
freopen("stramosi.in","r",stdin);
freopen("stramosi.out","w",stdout);
scanf("%ld%ld",&n,&m);
a[1]=0;
scanf("%ld",&v[1][0]);
for(i=2;i<=n;i++){
a[i]=a[i/2]+1;
scanf("%ld",&v[i][0]);
}
for(i=1;i<=n;i++)
for(j=1;j<=a[n];j++){
if(!v[v[i][j-1]][j-1])
break;
v[i][j]=v[v[i][j-1]][j-1];
}
for (i=0;i<m;i++){
scanf("%ld %ld\n",&q,&p);
while(p){
l=v[q][a[p]];
p-=(1<<a[p]);
q=l;
}
printf("%d\n",l);
}
fclose(stdin);
fclose(stdout);
return 0;
}