Cod sursa(job #778374)

Utilizator ionut_blesneagIonut Blesneag ionut_blesneag Data 14 august 2012 16:16:21
Problema Stramosi Scor 50
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.87 kb
#include<fstream>
#include<cstring>
using namespace std;

ifstream f("stramosi.in");
ofstream g("stramosi.out");

int n,nq,i,j,k;
int a[20][250001];
char buff[1500001];
int q,x,nrc;

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

int main()
{f.getline(buff,30);
nrc=0;
n=get_number();
nrc++;
nq=get_number();
f.getline(buff,1500001);
nrc=0;
for(i=1; i<=n; i++)
  {a[0][i]=get_number();
   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++)
 {f.getline(buff,30);
  nrc=0;
  x=get_number();
  nrc++;
  q=get_number();
  j=0;
  while(q)
     {if(q&1)
        x=a[j][x];
      j++;
      q=q>>1;}  

  g<<x<<endl;   
         }  
return 0;    
}