Cod sursa(job #178056)

Utilizator firewizardLucian Dobre firewizard Data 14 aprilie 2008 04:03:59
Problema Stramosi Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.74 kb
#include<stdio.h>   
  
int a[22][250010];   
  
int main()   
{   
FILE *fin=fopen("stramosi.in","r"),   
     *fout=fopen("stramosi.out","w");   
        
int n,m,i,j,p,q;   
fscanf(fin,"%d%d",&n,&m);   
  
for(i=1;i<=n;i++)   
   fscanf(fin,"%d",&a[0][i]);   
      
//preprocesare   
for(i=1;i<=19;i++)   
  for(j=1;j<=n;j++)   
     a[i][j]=a[i-1][a[i-1][j]];   
      
int nb;     
for(i=1;i<=m;i++)   
   {   
   fscanf(fin,"%d%d",&p,&q);                 
      
   while(q)   
   {      
   nb=0;   
   while((1<<nb) <= q) nb++;   
   nb--;   
      
   q-=(1<<nb);   
   p=a[nb][p];   
   }     
      
   fprintf(fout,"%d\n",p);      
   }   
           
fclose(fin);   
fclose(fout);   
return 0;   
}