Cod sursa(job #2701145)

Utilizator andrei_marciucMarciuc Andrei andrei_marciuc Data 29 ianuarie 2021 22:34:16
Problema Stramosi Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.75 kb
#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;
}