Cod sursa(job #192119)

Utilizator DjSefuWrong name DjSefu Data 30 mai 2008 19:36:19
Problema Stramosi Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.31 kb
#include<stdio.h>
FILE *f=fopen("stramosi.in","r"),
     *g=fopen("stramosi.out","w");
int a[30][250099],i,j,n,k,m,p,q,r;
char c[1750010]; 
void citt()  
{  
    fgets(c,1750010,f);  
    int i,au=0,au1,au2;  
    for(i=0;c[i]!='\0';++i)  
    {  
        if(c[i]>='0')  
        {  
            au1=au<<3;  
            au2=au<<1;  
            au=au1+au2+c[i]-'0';  
        }  
        else  
        {  
            a[0][++n]=au;  
            au=0;  
        }  
    }  
}   
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",&n,&m);
  n=0;
  citt();
  r=n;
  k=17;
  for(i=1;i<=k;++i)
                for(j=1;j<=n;++j)
                        { a[i][j]=a[i-1][a[i-1][j]];
                        }
  for(i=1;i<=m;++i) { cit(p,q);
                      k=0;
                      while(p&&q){ if(p&1) q=a[k][q];
                                p>>=1;
                                ++k;
                              }
                      fprintf(g,"%d\n",q);
                    }
  fclose(f);
  fclose(g);
  return 0;
}