Pagini recente » Cod sursa (job #2386263) | Cod sursa (job #1234237) | Cod sursa (job #750671) | Cod sursa (job #807733) | Cod sursa (job #2701145)
#include <stdio.h>
int a[ 18 ][ 250001 ];
int n, m;
int main()
{
FILE *fin = fopen( "stramosi.in", "r" );
fscanf( fin, "%d%d", &n, &m );
for( int i = 1; i <= n; i++ )
fscanf( fin, "%d", &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;
fscanf( fin, "%d %d", &q, &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;
}