Pagini recente » Cod sursa (job #1383888) | Cod sursa (job #556047) | Cod sursa (job #2744478) | Cod sursa (job #1322922) | Cod sursa (job #138497)
Cod sursa(job #138497)
#include <stdio.h>
#define nmax 250001
long a[nmax][21],b[nmax];
FILE *f,*g;
int main(){
long n,m,i,p,q,x,nr,y,k;
f=fopen("stramosi.in","rt"); g=fopen("stramosi.out","wt");
fscanf(f,"%ld %ld\n",&n,&m);
for (i=1;i<=n;i++){
fscanf(f,"%ld",&b[i]);
a[i][0]=b[i];
}
for (i=1;i<=n;i++)
for (k=1;k<18;k++) a[i][k]=a[a[i][k-1]][k-1];
for (i=1;i<=m;i++){
fscanf(f,"%ld %ld\n",&p,&q);
while (q){
nr=1; y=0;
while ( (2*nr<=q)&&(y<17) ) { nr*=2; y++; }
x=a[p][y]; p=x; q-=nr;
}
fprintf(g,"%ld\n",x);
}
fclose(f); fclose(g);
return 0;
}