Cod sursa(job #3318288)

Utilizator vladneaguVladneagu vladneagu Data 27 octombrie 2025 20:38:35
Problema Stramosi Scor 90
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.73 kb
#include <bits/stdc++.h>
using namespace std;
//#define int long long
const int maxn=2e5+5;
const int LOG=21;
int up[maxn][LOG];
int p[maxn];
int query(int nod,int h) {
    int nodcur=nod;
    for (int i=0;i<LOG;i++) {
        if ((1<<i)&h)nodcur=up[nodcur][i];
    }
    return nodcur;
}
signed main() {
    ifstream cin("stramosi.in");
    ofstream cout("stramosi.out");
    int n,q;
    cin>>n>>q;
    p[0]=0;
    up[0][0]=0;
    for(int i=1;i<=n;i++) {
        cin>>p[i];
        up[i][0]=p[i];
    }
    for (int i=1;i<=n;i++) {
        for (int j=1;j<LOG;j++) {
            up[i][j]=up[up[i][j-1]][j-1];
        }
    }
    for (int i=1;i<=q;i++) {
        int nod,h;
        cin>>nod>>h;
        cout<<query(nod,h)<<'\n';
    }
    return 0;
}