Pagini recente » Cod sursa (job #1727404) | Cod sursa (job #1610516) | Cod sursa (job #2067099) | Cod sursa (job #2589414) | Cod sursa (job #2521632)
#include <stdio.h>
#define MAX 250000
int t[MAX+1][18],log[MAX+1];
int main(){
FILE *fin=fopen("stramosi.in","r");
FILE *fout=fopen("stramosi.out","w");
int n,m,i,j,p,q,l;
fscanf(fin,"%d%d",&n,&m);
for(i=1; i<=n; i++)
fscanf(fin,"%d",&t[i][0]);
log[2]=1;
for(i=3; i<=MAX; i++)
log[i]=log[i/2]+1;
for(j=1; j<18; j++)
for(i=1; i<=n; i++)
t[i][j]=t[t[i][j-1]][j-1];
for(i=0; i<m; i++){
fscanf(fin,"%d%d",&q,&p);
while(p){
l=p&(-p);
q=t[q][log[l]];
p-=l;
}
fprintf(fout,"%d\n",q);
}
fclose(fin);
fclose(fout);
return 0;
}