Cod sursa(job #3228386)

Utilizator Bogdan345Marius Mihalache Bogdan345 Data 8 mai 2024 09:10:47
Problema Stramosi Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.68 kb
#include <iostream>
using namespace std;
//dp[j][i]= fac saltul de la nodul la nodul 2^j+1
const int MAXVAL=250000;
const int putere=17;
int dp[putere+1][MAXVAL+1],log_2[MAXVAL+1];
int main(){
    ios::sync_with_stdio(false);
    cin.tie(0);
    cout.tie(0);
    int n,m;
    cin>>n>>m;
    for(int i=1;i<=n;i++){
        cin>>dp[0][i];
    }
    for(int j=1;j<=log_2[n];j++){
        for(int i=1;i<=n;i++){
            dp[j][i]=dp[j-1][dp[i][j-1]];
        }
    }
    int nod,put;
    for(int i=1;i<=m;i++){
        cin>>nod>>put;
        while(put){
            nod=dp[log_2[put]][nod];
            put-=(1<<log_2[put]);
        }
        cout<<nod<<'\n';
    }
}