Cod sursa(job #2796333)

Utilizator RaresPoinaruPoinaru-Rares-Aurel RaresPoinaru Data 7 noiembrie 2021 21:58:38
Problema Stramosi Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.67 kb
#include <bits/stdc++.h>
using namespace std;
ifstream fin ("stramosi.in");
ofstream fout ("stramosi.out");

const int NMAX=250010;
const int LMAX=20;

int n,m,dp[NMAX][LMAX];

int main()
{
    fin >>n>>m;

    for (int i=1;i<=n;++i){
        fin >>dp[i][0];
    }

    for (int i=1;i<=n;++i){
        for (int j=1;j<LMAX;++j){
            dp[i][j]=dp[dp[i][j-1]][j-1];
        }
    }

    for (int i=1;i<=m;++i){
        int k,p;
        fin >>k>>p;
        for (int j=LMAX;j>=0;--j){
            if (p&(1<<j)){
                k=dp[k][j];
            }
        }
        fout <<k<<'\n';
    }
    fin.close ();
    fout.close ();
    return 0;
}