fork download
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. //
  4. const int maxn = 1e5 + 5;
  5. //
  6. int n, q, V[maxn], rmq[maxn][30];
  7. //
  8. void build (void)
  9. {
  10. for (int i = 1; i <= n; ++i)
  11. rmq[i][0] = V[i];
  12. for (int j = 1; j < 30; ++j)
  13. for (int i = 1; i <= n; ++i)
  14. rmq[i][j] = rmq[rmq[i][j - 1]][j - 1];
  15. }
  16. int solve (int u, int x)
  17. {
  18. int v = u;
  19. //
  20. for (int i = 0; (1 << i) <= x; ++i)
  21. if (x >> i & 1)
  22. v = rmq[v][i];
  23. return v;
  24. }
  25. //
  26. void process (void)
  27. {
  28. cin >> n >> q;
  29. for (int i = 1; i <= n; ++i)
  30. cin >> V[i];
  31. build();
  32. for (int u, x; q--; cout << '\n')
  33. cin >> u >> x,
  34. cout << solve(u, x);
  35. }
  36. //
  37. signed main (void)
  38. {
  39. ios_base::sync_with_stdio(false), cin.tie(nullptr), cout.tie(nullptr);
  40. process();
  41. }
Success #stdin #stdout 0s 5308KB
stdin
Standard input is empty
stdout
Standard output is empty