Pagini recente » Cod sursa (job #2136130) | Cod sursa (job #714141) | Cod sursa (job #2959994) | Cod sursa (job #2729238) | Cod sursa (job #2313381)
#include<bits/stdc++.h>
using namespace std ;
ifstream f ( "stramosi.in" ) ;
ofstream g ( "stramosi.out" ) ;
const int NR = 250001 ;
int rmq [ 20 ][ NR ] ;
// rmq [ i ] [ j ] - al 2^i - lea stramos al lui j
int main ()
{
int q , k , n ; f >> n >> q ;
int i , j ;
for ( i = 1 ; i <= n ; ++ i ) f >> rmq [ 0 ][ i ] ;
for ( k = 1 ; k <= n ; k *= 2 )
for ( i = 1 ; ( 1 << i ) <= n ; ++ i )
for ( j = 1 ; j <= n ; j ++ )
rmq [ i ][ j ] = rmq [ i - 1 ][ rmq [ i - 1 ][ j ] ] ;
while ( q -- )
{
int nod , nr ;
f >> nod >> nr ;
int lg = k ;
while ( nod && lg -- ) if ( ( 1 << lg ) & nr ) nod = rmq [ lg ][ nod ] ;
g << nod << "\n" ;
}
f.close() ;
g.close() ;
return 0 ;
}