Pagini recente » Cod sursa (job #2311570) | Cod sursa (job #770652) | Cod sursa (job #883261) | Cod sursa (job #2964010) | Cod sursa (job #2694944)
#include <stdio.h>
#define MAX_N 250000
#define MAX_LOG_N 17
int stramos[MAX_LOG_N + 1][MAX_N + 1];
int main() {
FILE *fin, *fout;
int n, m, p, q, i, j;
fin = fopen( "stramosi.in", "r" );
fscanf( fin, "%d%d", &n, &m );
for ( i = 1; i <= n; i++ )
fscanf( fin, "%d", &stramos[0][i] );
i = 1;
while ( (1 << i) <= n ) {
for ( j = 1; j <= n; j++ )
stramos[i][j] = stramos[i - 1][stramos[i - 1][j]];
i++;
}
fout = fopen( "stramosi.out", "w" );
for ( i = 0; i < m; i++ ) {
fscanf( fin, "%d%d", &q, &p );
j = 0;
while ( p > 0 ) {
if ( p & 1 )
q = stramos[j][q];
j++;
p >>= 1;
}
fprintf( fout, "%d\n", q );
}
fclose( fin );
fclose( fout );
return 0;
}