Pagini recente » Cod sursa (job #487114) | Cod sursa (job #2458650) | Cod sursa (job #2590429) | Cod sursa (job #1404028) | Cod sursa (job #868271)
Cod sursa(job #868271)
#include <stdio.h>
int log2[250001],str[19][250002],n,m;
int main(){
freopen("stramosi.in","r",stdin);
freopen("stramosi.out","w",stdout);
scanf("%d %d",&n,&m);
log2[1]=0;
for(int i=1;i<=n;i++){
scanf("%d",&str[0][i]);
}
for(int i=2;i<=n;i++)
log2[i]=log2[i/2]+1;
for(int lev=1;lev<19;lev++){
for(int i=1;i<=n;i++)
str[lev][i]=str[lev-1][str[lev-1][i]];
}
int p,q;
for(int i=0;i<m;i++){
scanf("%d %d",&q,&p);
while(p!=0 && q!=0){
q=str[log2[p]][q];
p-=(1<<log2[p]);
}
printf("%d\n",q);
}
return 0;
}