Cod sursa(job #2696193)

Utilizator TghicaGhica Tudor Tghica Data 15 ianuarie 2021 15:39:52
Problema Stramosi Scor 90
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.76 kb
#include <stdio.h>

#define MAXN 250000
#define PUT2MX 17

int stramos[PUT2MX + 1][MAXN + 1];
int main() {
  FILE *fin, *fout;
  fin = fopen( "stramosi.in", "r" );
  fout = fopen( "stramosi.out", "w" );
  int n, m, bz2, x, i, j;
  fscanf( fin, "%d", &n );
  fscanf( fin, "%d", &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++;
  }
  for ( i = 0; i < m; i++ ) {
    j = 0;
    fscanf( fin, "%d", &x );
    fscanf( fin, "%d", &bz2 );
    while ( 0 < bz2 ) {
      if ( bz2 & 1 )
        x = stramos[j][x];
      bz2 /= 2;
      j++;
    }
    fprintf( fout, "%d\n", x );
  }
  return 0;
}