Cod sursa(job #114838)

Utilizator nicolaetitus12Nicolae Titus nicolaetitus12 Data 15 decembrie 2007 23:21:40
Problema Stramosi Scor 0
Compilator c Status done
Runda Arhiva de probleme Marime 0.59 kb
#include <string.h>
#include <stdio.h>
#define N 300000
int main ()
{FILE *fin,*fout;
 fin=fopen("stramosi.in","r");
 fout=fopen("stramosi.out","w");
 long n,m,i,j,x,y,s,c,d,e;
 long q[20][N];
 memset(q,0,sizeof(q));
 fscanf(fin,"%ld %ld",&n,&m);

 for (i=1;i<=n;i++)
 {fscanf(fin,"%ld",&q[1][i]);}

 for (i=2;i<=18;i++)
 {for (j=1;j<=n;j++)
  {q[i][j]=q[i-1][q[i-1][j]];
  }
 }


 for (i=1;i<=m;i++)
 {fscanf(fin,"%ld %ld",&x,&y);
  while(y)
  {for(c=y,d=1;c>1;c/=2,d*=2){}
   y-=d;
   x=q[d][x];
  }
  fprintf(fout,"%ld\n",x);
 }
 fclose(fin);
 fclose(fout);
 return 0;
}