Cod sursa(job #3260480)

Utilizator StefanPopescu2Popescu Stefan StefanPopescu2 Data 2 decembrie 2024 16:12:03
Problema Stramosi Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.85 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()
{   
  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];
    }
  int m;
  
  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;
    cin >> q >> p;
    // al p- lea stramos al lui q
    int x=q;
    while(p>0){
    int k = log2[p];
     x = stra[x][k];
    p =p - (1<<k);
    }
    fout << x<<'\n';
    
    
  }



   
  return 0;
}