Cod sursa(job #778380)

Utilizator ionut_blesneagIonut Blesneag ionut_blesneag Data 14 august 2012 16:29:31
Problema Stramosi Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.03 kb
#include<cstdio>
#include<cstring>
using namespace std;

int n,nq,i,j,k;
int a[20][250001];
char buff1[20]; 
char buff2[1760000];
int q,x,nrc;

int get_number1()
{int nrn=0;
while(buff1[nrc]<='9' && buff1[nrc]>='0')
  {nrn=nrn*10+buff1[nrc]-'0';
   nrc++;}
return nrn;
}

int get_number2()
{int nrn=0;
while(buff2[nrc]<='9' && buff2[nrc]>='0')
  {nrn=nrn*10+buff2[nrc]-'0';
   nrc++;}
return nrn;
}

int main()
{
freopen("stramosi.in","r",stdin);
freopen("stramosi.out","w",stdout);
gets(buff1);
nrc=0;
n=get_number1();
nrc++;
nq=get_number1();
gets(buff2);
nrc=0;
for(i=1; i<=n; i++)
  {a[0][i]=get_number2();
   nrc++;}
  

 for(j=1; j<=n; j++)
   for(i=1; i<=18; i++)
     {if(a[i-1][a[i-1][j]])
      a[i][j]=a[i-1][a[i-1][j]];
      else 
        break;}
  
for(i=1; i<=nq; i++)
 {gets(buff1);
  nrc=0;
  x=get_number1();
  nrc++;
  q=get_number1();
  j=0;
  while(q)
     {if(q&1)
        x=a[j][x];
      j++;
      q=q>>1;}  

  printf("%d\n",x);   
         }  
return 0;    
}