Cod sursa(job #3003231)

Utilizator MateiStoianStoian Matei Octavian MateiStoian Data 15 martie 2023 16:51:12
Problema Stramosi Scor 70
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.67 kb
#include <bits/stdc++.h>

using namespace std;
int n, q;
int t[250001][19];

int query(int nod, int k) {
    for (int h = log2(n+1); h >= 0; h--) {
        if ((k & (1 << h))) {
            nod = t[nod][h];
        }
    }
    return nod;
}

int main() {
    freopen("stramosi.in", "r", stdin);
    freopen("stramosi.out", "w", stdout);
    cin >> n >> q;
    for (int i = 1; i <= n; i++) {
        cin >> t[i][0];
    }
    for (int h = 1; h <= log2(n+1); h++) {
        for (int i = 1; i <= n; i++) {
            t[i][h] = t[t[i][h - 1]][h - 1];
        }
    }
    while (q--) {
        int nod, k;
        cin >> nod >> k;
        cout << query(nod, k) << '\n';
    }
    return 0;
}