Cod sursa(job #2215852)

Utilizator NOSCOPEPROKENDYMACHEAMACUMVREAU NOSCOPEPROKENDY Data 23 iunie 2018 21:18:18
Problema Stramosi Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.63 kb
#include <bits/stdc++.h>
using namespace std;

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

int dp[20][250002];
int n, m, p, x;

int solve (int x, int p) {
  if (p == 0)
    return x;
  int k = 0;
  while ((1 << (k + 1)) <= p)
    k++;
  return solve(dp[k][x], p - (1 << k));
}

int main()
{
  fin >> n >> m;
  for (int i = 1; i <= n; i++)
    fin >> dp[0][i];
  int h = log2(n);
  for (int i = 1; i <= h; i++)
    for (int j = 1; j <= n; j++)
      dp[i][j] = dp[i - 1][dp[i - 1][j]];
  for (int i = 1; i <= m; i++) {
    fin >> x >> p;
    fout << solve(x, p) << "\n";
  }
  return 0;
}