Cod sursa(job #3306740)

Utilizator adimiclaus15Miclaus Adrian Stefan adimiclaus15 Data 13 august 2025 13:33:54
Problema Stramosi Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.76 kb
#include <bits/stdc++.h>

using namespace std;

const int NMAX = 250000;
int T[NMAX + 1], S[NMAX + 1][18];

int query(int x, int d) {
    for(int i = log2(d); i >= 0; i--) {
        if((1 << i) <= d) {
            x = S[x][i];
            d -= (1 << i);
        }
    }
    return x;
}

int main() {
    ifstream cin("stramosi.in");
    ofstream cout("stramosi.out");
	int n, q;
    cin >> n >> q;
    for(int i = 1; i <= n; i++) {
        cin >> T[i];
    }
    for(int i = 1; i <= n; i++) {
        S[i][0] = T[i];
    }
    for(int j = 1; j <= log2(n); j++) {
        for(int i = 1; i <= n; i++) {
            S[i][j] = S[S[i][j - 1]][j - 1];
        }
    }
    while(q--) {
        int x, d;
        cin >> x >> d;
        cout << query(x, d) << '\n';
    }
    return 0;
}