Cod sursa(job #3215508)

Utilizator Remus.RughinisRemus Rughinis Remus.Rughinis Data 15 martie 2024 08:45:57
Problema Stramosi Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.79 kb
#include <iostream>
#include <fstream>
#define MAXN 250000
#define LOGN 19
#define DEBUG 0

using namespace std;

int d[MAXN + 1][LOGN];

int main(){
  int n, q;

  ifstream fin ("stramosi.in");
  fin >> n >> q;
  for(int i = 1; i <= n; i ++){
    fin >> d[i][0];
  }

  for(int j = 1; (1 << j) < n; j ++)
    for(int i = 1; i <= n; i ++){
      d[i][j] = d[ d[i][j - 1] ][j - 1];
    } 

  if(DEBUG){
    for(int i = 1; i <= n; i ++){
      for(int j = 0; (1 << j) < n; j ++){
        printf("%d ", d[i][j]);
      }
      printf("\n");
    }
  }

  ofstream fout ("stramosi.out");
  for(int i = 0; i < q; i ++){
    int x, p;
    fin >> x >> p;

    for(int j = 0; (1 << j) < n; j ++)
      if(p & (1 << j))
        x = d[x][j];

    fout << x << "\n";
  }
  fin.close();
  fout.close();

  return 0;
}