Cod sursa(job #2696261)

Utilizator teodorescunicolasteodorescu nicolas alexandru teodorescunicolas Data 15 ianuarie 2021 16:51:52
Problema Stramosi Scor 80
Compilator c-64 Status done
Runda Arhiva de probleme Marime 0.86 kb
#include <stdio.h>
#define NMAXX 250000
#define PUTMAXX 17

int mat[PUTMAXX + 1][NMAXX + 1];
int main() {
    FILE *fin, *fout;
    int n, m, i, l, c, x, poz, baza2;
    fin = fopen( "stramosi.in", "r" );
    fout = fopen( "stramosi.out", "w" );
    fscanf( fin, "%d%d", &n, &m );
    for ( i = 1; i <= n; i++ ) {
        fscanf( fin, "%d", &mat[0][i] );
    }
    for ( l = 1; ( 1 << l ) <= n; l++ ) {
        for ( c = 1; c <= n; c++ ) {
            mat[l][c] = mat[l - 1][mat[l - 1][c]];
        }
    }
    for ( i = 0; i < m; i++ ) {
        fscanf( fin, "%d%d", &x, &poz );
        baza2 = 0;
        while ( poz > 0 ) {
            if ( poz % 2 == 1 )
                x = mat[baza2][x];
            baza2++;
            poz /= 2;
        }
        fprintf( fout, "%d\n", x );
    }
    fclose( fin );
    fclose( fout );
    return 0;
}