Cod sursa(job #192107)

Utilizator DjSefuWrong name DjSefu Data 30 mai 2008 19:01:25
Problema Stramosi Scor 80
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.73 kb
#include<stdio.h>
FILE *f=fopen("stramosi.in","r"),
     *g=fopen("stramosi.out","w");
int a[250099][30],i,j,n,k,m,p,q,r;
int main()
{ fscanf(f,"%d %d",&n,&m);
  for(i=1;i<=n;++i) fscanf(f,"%d",&a[i][0]);
  r=n;
  while(r>0) r>>=1,++k;
  --k;
  for(i=1;i<=k;++i)
                for(j=1;j<=n;++j)
                        { a[j][i]=a[a[j][i-1]][i-1];
                        }
  for(i=1;i<=m;++i) { fscanf(f,"%d %d",&q,&p);
                      k=0;r=q;
                      while(p){ if(p&1) r=a[r][k];
                                p>>=1;
                                ++k;
                              }
                      fprintf(g,"%d\n",r);
                    }
  fclose(f);
  fclose(g);
  return 0;
}