Cod sursa(job #3338241)

Utilizator calinulCalin Cernat calinul Data 1 februarie 2026 19:52:15
Problema Stramosi Scor 100
Compilator c-64 Status done
Runda Arhiva de probleme Marime 0.62 kb
#include <stdio.h>

int up[250002][19];

int main() {
  FILE *fin, *fout;
  int n, m, q, p, i;

  fin = fopen( "stramosi.in", "r" );
  fscanf( fin, "%d%d", &n, &m );
  for ( i = 1; i <= n; i++ )
    fscanf( fin, "%d", &up[i][0] );

  for ( q = 1; q < 19; q++ )
    for ( i = 1; i <= n; i++ )
      up[i][q] = up[up[i][q - 1]][q - 1];

  fout = fopen( "stramosi.out", "w" );
  for ( ; m > 0; m-- ) {
    fscanf( fin, "%d%d", &q, &p );

    for ( i = 0; i < 19 && q; i++ )
      if ( p & (1 << i) )
        q = up[q][i];

    fprintf( fout, "%d\n", q );
  }
  fclose( fin );
  fclose( fout );

  return 0;
}