Cod sursa(job #2247528)

Utilizator liviu2000Dragomirescu Liviu liviu2000 Data 28 septembrie 2018 19:07:49
Problema Stramosi Scor 100
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 = 0 ; j <= 17 ; j++ )
            {
                dp[i][j+1] = dp[x][j] ;
                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' ;
    }
}