Cod sursa(job #2694943)

Utilizator LucaMihaiLM10Luca Ilie LucaMihaiLM10 Data 11 ianuarie 2021 09:49:10
Problema Stramosi Scor 70
Compilator c-64 Status done
Runda Arhiva de probleme Marime 0.84 kb
#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 = 0; 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;
}