Pagini recente » Cod sursa (job #2620665) | Cod sursa (job #1980556) | Cod sursa (job #474586) | Cod sursa (job #955651) | Cod sursa (job #307228)
Cod sursa(job #307228)
#include<stdio.h>
#define LOG 20
int n,m;
int p[LOG][250001];
void citire(){
freopen("stramosi.in","r",stdin);
freopen("stramosi.out","w",stdout);
scanf("%d %d",&n,&m);
int i;
for(i=1;i<=n;++i)
scanf("%d",p[0]+i);
}
void build(){
int i,j;
for(i=1;i<LOG;++i){
for(j=1;j<=n;++j){
p[i][j] = p[i-1][ p[i-1][j] ];
}
}
}
int find(int elem,int ord){
if(ord > n) return 0;
int i;
for(i=LOG-1;i>=0;--i){
if(ord >= 1<<i){
elem=p[i][elem];
ord -= (1<<i);
}
}
return elem;
}
void job(){
int i,elem,ord;
for(i=0;i<m;++i){
scanf("%d %d",&elem,&ord);
printf("%d\n",find(elem,ord));
}
}
int main(void){
citire();
build();
job();
return 0;
}