Cod sursa(job #2771559)

Utilizator mjmilan11Mujdar Milan mjmilan11 Data 28 august 2021 02:13:20
Problema Stramosi Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.83 kb
#include <bits/stdc++.h>
using namespace std;
ifstream fin("stramosi.in");
ofstream fout("stramosi.out");
const int NMAX = 250005;
int dp[25][NMAX],n,m,q,p;
int main()
{
    fin >> n >> m;
    for(int i=1;i<=n;i++){
        fin >> dp[0][i];
    }
    for(int i=1;i<=20;i++){
        for(int j=1;j<=n;j++){
            dp[i][j]=dp[i-1][dp[i-1][j]];
        }
    }
    for(int i=1;i<=m;i++){
        fin >> q >> p;
        int nr=1,put=0;
        while(nr<=p){
            nr*=2;
            put++;
        }
        if(put>20){
            fout << 0 << '\n';
            continue;
        }
        for(int j=put;j>=0;j--){
            if(q==0) break;
            if((1<<j)<=p){
                q=dp[j][q];
                p-=(1<<j);
            }
        }
        fout << q << '\n';
    }
    return 0;
}