Cod sursa(job #2904615)

Utilizator larisa-ioana.virtejanuLarisa Ioana Virtejanu larisa-ioana.virtejanu Data 18 mai 2022 00:15:06
Problema Stramosi Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.64 kb
#include <fstream>
 
using namespace std;
 
const int N = 25e4 + 5;
const int LOG = 18;
 
int tata[N], up[N][LOG];
 
int main() {
  ifstream cin("stramosi.in");
  ofstream cout("stramosi.out");
  int n, q;
  cin >> n >> q;
  for (int i = 1; i <= n; ++i)
    cin >> tata[i];
  for (int i = 1; i <= n; ++i) {
    up[i][0] = tata[i];
    for (int j = 1; j < LOG; ++j)
      up[i][j] = up[up[i][j - 1]][j - 1];
  }
  while (q--) {
    int nod, k;
    cin >> nod >> k;
    for (int i = LOG - 1; i >= 0; --i)
      if (k & (1 << i))
        nod = up[nod][i];
    cout << nod << "\n";
  }
  cin.close();
  cout.close();
  return 0;
}