Cod sursa(job #3260488)

Utilizator florian_ciolacu03Ciolacu Florian florian_ciolacu03 Data 2 decembrie 2024 16:16:51
Problema Stramosi Scor 80
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.81 kb
#include <fstream>

using namespace std;
ifstream fin("stramosi.in");
ofstream fout("stramosi.out");
 int log22[100002];
 int tata[100002];
 int stra[100002][18];
   // stra[i][j]= al 2^j stramos al lui i



int main()
{
    int n , m;
  fin >> n>>m;
  log22[1] = 0;
  for(int i = 2; i <= n; i++)
  {
    log22[i] = 1 + log22[i/2];
  }

  for (int i = 1; i <= n; i++)
    { fin >> tata[i];
    stra[i][0]= tata[i];
    }

  for(int j= 1; (1<<j) <n ;j++)
  {
    for (int i = 1; i <= n; i++)
      stra[i][j]= stra[stra[i][j - 1]][j-1];
  }

  for (int i = 1; i <= m; i++)
  {
    int p, q;
    fin >> q >> p;
    // al p- lea stramos al lui q
    int x=q;
    while(p>0){
    int k = log22[p];
     x = stra[x][k];
    p =p - (1<<k);
    }
    fout << x<<'\n';
  }

  return 0;
}