Cod sursa(job #851067)

Utilizator RaileanuCristian Raileanu Raileanu Data 9 ianuarie 2013 14:05:50
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;
}