Cod sursa(job #2144635)

Utilizator CozmaCatalinCozma Catalin CozmaCatalin Data 26 februarie 2018 20:47:05
Problema Stramosi Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.85 kb
#include <bits/stdc++.h>

using namespace std;

int N,M;
int Matrix[51][250003];
int LG[250003];
int main()
{
    freopen("stramosi.in" , "r" ,stdin);
   freopen("stramosi.out" , "w", stdout);

  scanf("%d%d" ,&N , &M);

  scanf("%d", &Matrix[0][1]);

  for ( int i = 2 ; i <= N ; ++i)
  {
      scanf("%d", &Matrix[0][i]);
      LG[i] = LG[i/2]+1;
  }

  for ( int k = 1; ( 1 << k ) <= N ; ++k)
    for ( int i = 1;  i<= N ; ++i)
       Matrix[k][i] = Matrix[k-1][Matrix[k-1][i]];

  for ( int i = 1; i <= M ; ++i)
  {
      int x,y;
      scanf("%d%d" , &x , &y);

      while(y)
      {
          x = Matrix[LG[y]][x];
          y = y - ( 1 << LG[y]);
      }
      printf("%d\n", x);
  }

  for ( int i = 0; i <= N ; ++i)
  {
      for ( int j = 1; j <= N ; ++j)
        cout << Matrix[i][j] <<" ";
      cout << endl;
  }
}