Cod sursa(job #2247524)

Utilizator liviu2000Dragomirescu Liviu liviu2000 Data 28 septembrie 2018 19:05:18
Problema Stramosi Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.7 kb
#include <bits/stdc++.h>

using namespace std;

ifstream fin("stramosi.in") ;
ofstream fout("stramosi.out") ;

int dp[250005][20] ;

int main()
{
    int n , m , i , x , y , j , p ;
    fin >> n >> m ;
    for ( i = 1 ; i <= n ; i++ )
    {
        fin >> x ;
        dp[i][0] = x ;
        if ( x )
        {
            for ( j = 1 ; j <= 18 ; j++ )
            {
                dp[i][j] = dp[x][j-1] ;
                x = dp[x][j] ;
            }
        }
    }
    for ( i = 1 ; i <= m ; i++ )
    {
        fin >> x >> y ;
        p = x ;
        for ( j = 18 ; j >= 0 ; j-- )
            if ( y&(1<<j) )
                p = dp[p][j] ;
        fout << p << '\n' ;
    }
}