Cod sursa(job #192110)

Utilizator DjSefuWrong name DjSefu Data 30 mai 2008 19:15:51
Problema Stramosi Scor 80
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.01 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;
char c[1750010];  
void cit(int &p,int &q)
{  
    fgets(c,100,f);
    p=q=0;  
    int i,j,q1,q2;  
    for(i=0; c[i]>='0'; i++)  
    {  
        q1=q<<3;  
        q2=q<<1;  
        q=q1+q2;  
        q+=c[i]-'0';  
    }  
    for(j=i+1; c[j]>='0'; j++)  
        p=p*10+c[j]-'0';  
}  
int main()
{ fscanf(f,"%d %d",&n,&m);
  for(i=1;i<=n;++i) fscanf(f,"%d",&a[i][0]);
  fscanf(f,"\n");
  r=n;
  k=17;
  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) { cit(p,q);
                      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;
}