Cod sursa(job #3229639)

Utilizator AlexPlesescuAlexPlesescu AlexPlesescu Data 16 mai 2024 21:55:42
Problema Stramosi Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.79 kb
#include <bits/stdc++.h>

using namespace std;

int up[260000][40], n, m;

int k_th(int q, int p) {
    int ans = q;
    for (int i = 0; (1 << i) <= n; i++) {
        if (p & (1 << i)) {
            ans = up[ans][i];
        }
    }
    return ans;
}

int main()
{
    freopen("stramosi.in", "r", stdin);
    freopen("stramosi.out", "w", stdout);
    cin.tie(0)->sync_with_stdio(0);
    cin >> n >> m;
    for (int i = 1; i <= n; i++)
    {
        int a;
        cin >> a;
        up[i][0] = a;
    }
    for (int j = 1; (1 << j) <= n; j++) {
        for (int i = 1; i <= n; i++) {
            up[i][j] = up[up[i][j - 1]][j - 1];
        }
    }
    while (m--)
    {
        int q, p;
        cin >> q >> p;
        cout << k_th(q, p) << '\n';
    }
    return 0;
}