Cod sursa(job #2696405)

Utilizator Luca_Miscocilucainfoarena Luca_Miscoci Data 15 ianuarie 2021 20:37:18
Problema Stramosi Scor 80
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.75 kb
#include <stdio.h>
#define NMAX 250000
#define log2M 17
using namespace std;
int a[log2M + 1][NMAX + 5];
int stramosi(int x, int poz) {
  int cnt;
  cnt = 0;
  while (poz > 0){
    if (poz % 2 == 1)
      x = a[cnt][x];
    cnt ++;
    poz /= 2;
  }
  return x;
}
int main(){
  FILE *fin ,*fout;
  fin = fopen ("stramosi.in","r");
  fout = fopen ("stramosi.out", "w");

  int n,m,x,y,i,j;
  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 <= m; j++)
      a[i][j] = a[i - 1][a[i - 1][j]];
  while (m --){
    fscanf( fin, "%d", &x);
    fscanf( fin, "%d", &y);
    fprintf (fout ,"%d\n" ,stramosi(x, y));
  }
  return 0;
}