Cod sursa(job #253150)

Utilizator 630r63Ilinca George Mihai 630r63 Data 5 februarie 2009 14:52:51
Problema Stramosi Scor 100
Compilator c Status done
Runda Arhiva de probleme Marime 0.94 kb
   #include <stdio.h>  
   #define nmax 250001  
   long a[nmax][21],b[nmax];  
   FILE *f,*g;  
   int main()  
   {  
     long n,m,i,j,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;  
   }