Cod sursa(job #2698900)

Utilizator Ana_22Ana Petcu Ana_22 Data 23 ianuarie 2021 11:11:21
Problema Stramosi Scor 100
Compilator c-64 Status done
Runda Arhiva de probleme Marime 0.81 kb
#include <stdio.h>
#include <stdlib.h>
#define NMAX 250000
#define LMAX 17

int a[LMAX+1][NMAX+1];

int stramos( int q, int p ) {
  int j, rez;
  j = 0;
  rez = q;
  for( ; p > 0; p >>= 1 ) {
    if( p & 1 )
      rez = a[j][rez];
    j++;
  }
  return rez;
}

int main() {
    FILE *fin, *fout;
    int n, m, i, j, q, p;
    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", &a[0][i] );
    for( i = 1; ( 1 << i ) <= n; i++ )
      for( j = 1; j <= n; j++ )
        a[i][j] = a[i-1][a[i-1][j]];
    for( i = 0; i < m; i++ ) {
      fscanf( fin, "%d%d", &q, &p );
      fprintf( fout, "%d\n", stramos( q, p ) );
    }
    fclose( fin );
    fclose( fout );
    return 0;
}