Cod sursa(job #3199550)

Utilizator DariusHHanganu Darius DariusH Data 1 februarie 2024 20:08:15
Problema Stramosi Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.65 kb
#include <bits/stdc++.h>

using namespace std;

ifstream fin("stramosi.in");
ofstream fout("stramosi.out");

#define N_MAX 250001
#define LOG 20

int dp[LOG][N_MAX];

int main()
{
  int n, m, i, j, q, p, cnt, pos;
  fin >> n >> m;
  for(i = 1; i <= n; ++i) {
    fin >> dp[0][i];
  }

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

  while(m--) {
    fin >> q >> p;
    cnt = 0;
    pos = q;
    while(p > 0) {
      if(p % 2 == 1) {
        pos = dp[cnt][pos];
      }
      ++cnt;
      p /= 2;
    }

    fout << pos << '\n';
  }

  return 0;
}