Pagini recente » Cod sursa (job #891430) | Cod sursa (job #1540824) | Cod sursa (job #190926) | Cod sursa (job #2521147) | Cod sursa (job #1757917)
#include <stdio.h>
int d[250001][20];
//d[i][j]=al 2^j-lea stramos al lui i
int main(){
FILE *fin,*fout;
fin=fopen("stramosi.in","r");
fout=fopen("stramosi.out","w");
int i,j,n,m,p,q;
fscanf(fin,"%d%d",&n,&m);
for(i=1;i<=n;i++)
fscanf(fin,"%d",&d[i][0]);
for(i=1;i<=n;i++)
for(j=1;(1<<j)<=n;j++)
d[i][j]=d[d[i][j-1]][j-1];
for(i=1;i<=m;i++){
fscanf(fin,"%d%d",&q,&p);
for(j=0;(1<<j)<=p&&q>0;j++)
if(((1<<j)&p))
q=d[q][j];
fprintf(fout,"%d\n",q);
}
fclose(fin);
fclose(fout);
return 0;
}