Cod sursa(job #3301714)

Utilizator IleaIlea Bogdan Ilea Data 29 iunie 2025 12:36:55
Problema Stramosi Scor 80
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.9 kb
#include <iostream>
#include <vector>
using namespace std;

const int logmax=17;
#define NMAX 250001

int n, m;
int p[NMAX], dp[20][NMAX];
int main(){
    #ifdef LOCAL
        ios_base::sync_with_stdio(false);
        cin.tie(nullptr);
        cout.tie(nullptr);
    #endif
    freopen("stramosi.in", "r", stdin);
    freopen("stramosi.out", "w", stdout);
    cin>>n>>m;
    for (int i=1; i<=n; ++i){
        cin>>p[i];
        dp[0][i]=p[i];
    }
    for (int l=1; l<=logmax; ++l){
        for (int i=1; i<=n; ++i){
            dp[l][i]=dp[l-1][dp[l-1][i]];
        }
    }
    for (int i=1; i<=m; ++i){
        int nod, dist;
        cin>>nod>>dist;
        int cr=nod;
        for (int p2=logmax; p2>=0; --p2){
            if ((1<<p2)<=dist){
                dist-=(1<<p2);
                cr=dp[p2][cr];
            }
        }
        cout<<cr<<"\n";
    }
    return 0;
}