Pagini recente » Cod sursa (job #1408113) | Cod sursa (job #26269) | Cod sursa (job #1968425) | Cod sursa (job #613700) | Cod sursa (job #2701142)
#include <stdio.h>
int a[ 18 ][ 250001 ];
int n, m;
FILE *fin;
void fastread( int &x ){
register int c;
x = 0;
c = fgetc( fin );
for( ; ( c > 47 && c < 58 ); c = fgetc( fin ) )
x = ( x << 1 ) + ( x << 3 ) + c - 48;
}
int main()
{
fin = fopen( "stramosi.in", "r" );
fastread( n );
fastread( m );
for( int i = 1; i <= n; i++ )
fastread( a[ 0 ][ i ] );
for( int l = 1; l < 18; l++ )
for( int c = 1; c <= n; c++ )
a[ l ][ c ] = a[ l - 1 ][ a[ l - 1 ][ c ] ];
FILE *fout = fopen( "stramosi.out", "w" );
for( int i = 0; i < m; i++ ){
int q, p;
fastread( q );
fastread( p );
for( int l = 17; l >= 0; l-- )
if( p >= (1 << l) ){
q = a[ l ][ q ];
p -= (1 << l);
}
fprintf( fout, "%d\n", q );
}
fclose( fin );
fclose( fout );
return 0;
}