Cod sursa(job #864233)

Utilizator mitrutstrutMitrea Andrei Ionut mitrutstrut Data 24 ianuarie 2013 19:59:13
Problema Stramosi Scor 70
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.69 kb
#include <fstream>
using namespace std;
int n,m, str[250010][19] ;
int main()
{   ifstream f1("stramosi.in");
    ofstream f2("stramosi.out");
    f1>>n>>m;
    int i,j,c,p1,  p,q;
    for (i=1; i<=n; i++) f1>>str[i][0];
 
    for (i=1; i<=n; i++)
        {  for (p=1, c=str[i][0], j=1; c ; c=str[c][0], j++ )
                if (j==(1<<p) ) str[i][p++]=c;
        }
		
    for (i=1; i<=m; i++)
        { f1>>q>>p;
          for (j=p, c=q; j>0 && c; )
               {  p1=0;
                  while (1<<(p1+1)<=j) p1++;
                  c=str[c][p1];
                  j-= 1<<p1;  }
          f2<<c<<"\n";
                }
 
    f1.close();
    f2.close();
    return 0;
}