Cod sursa(job #2695661)

Utilizator Ana_22Ana Petcu Ana_22 Data 14 ianuarie 2021 09:43:37
Problema Stramosi Scor 80
Compilator c-64 Status done
Runda Arhiva de probleme Marime 0.82 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 /= 2 ) {
    rez = ( 1 - p % 2 ) * rez + ( p % 2 ) * 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;
}