Cod sursa(job #3220188)

Utilizator Radu_VasileRadu Vasile Radu_Vasile Data 2 aprilie 2024 19:13:27
Problema Stramosi Scor 30
Compilator c-64 Status done
Runda Arhiva de probleme Marime 0.67 kb
#include <stdio.h>
#define MAXN 250000
#define LOG 18
int par[LOG][MAXN + 1];
int main(){
  FILE *fin, *fout;
  int n, q, i, node, p, j;
  fin = fopen( "stramosi.in", "r" );

  fscanf(fin, "%d%d", &n, &q);
  for( i = 1; i <= n; i++ )
    fscanf(fin, "%d", &par[0][i]);
  for( p = 1; p <= LOG; p++ )
    for( i = 1; i <= n; i++ )
      par[p][i] = par[p - 1][par[p - 1][i]];
  fout = fopen( "stramosi.out", "w" );

  for( i = 0; i < q; i++ ){
    fscanf( fin, "%d%d", &node, &p);
    for( j = 0; j <= LOG; j++ ){
      if( p & (1 << j) )
        node = par[j][node];
    }
    fprintf(fout, "%d\n", node);
  }

  fclose( fin );
  fclose( fout );
  return 0;
}