Cod sursa(job #2679149)

Utilizator Razvan48Capatina Razvan Nicolae Razvan48 Data 29 noiembrie 2020 18:21:35
Problema Stramosi Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.77 kb
#include <fstream>
#include <vector>

using namespace std;

const int NMAX = 250000;
const int LOG = 17;

int stramosi[1 + LOG][1 + NMAX];

int main()
{
  ifstream in("stramosi.in");
  ofstream out("stramosi.out");
  int n, m;

  in >> n >> m;
  for (int i = 1; i <= n; i++)
  {
    in >> stramosi[0][i];
  }

  for (int putere = 1; putere <= LOG; putere++)
  {
    for (int i = 1; i <= n; i++)
    {
      stramosi[putere][i] = stramosi[putere - 1][stramosi[putere - 1][i]];
    }
  }

  for (int i = 1; i <= m; i++)
  {
    int q, p;

    in >> q >> p;

    for (int putere = 0; (1 << putere) <= p; putere++)
    {
      if ((1 << putere) & p)
      {
        q = stramosi[putere][q];
      }
    }

    out << q << '\n';
  }

  return 0;
}