Cod sursa(job #2247524)
Utilizator | 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' ;
}
}