Cod sursa(job #253145)

Utilizator 630r63Ilinca George Mihai 630r63 Data 5 februarie 2009 14:47:53
Problema Stramosi Scor 90
Compilator c Status done
Runda Arhiva de probleme Marime 0.91 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;  
   }