Cod sursa(job #3301720)

Utilizator IleaIlea Bogdan Ilea Data 29 iunie 2025 12:45:31
Problema Stramosi Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.89 kb
#include <iostream>
using namespace std;

const int logmax=17;
#define NMAX 250001

int n, m;
int dp[logmax+1][NMAX];
int main(){
    #ifdef LOCAL
        cout<<"LOCAL";
    #else 
        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>>dp[0][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;
}