Cod sursa(job #2153640)

Utilizator stefan_creastaStefan Creasta stefan_creasta Data 6 martie 2018 13:13:52
Problema Stramosi Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.58 kb
#include <iostream>
#include <fstream>
using namespace std;
const int NMAX = 250001;
int stram[19][NMAX];

int main() {
  ifstream in("stramosi.in");
  ofstream ou("stramosi.out");
  int n, m, q, p;
  in >> n >> m;
  for(int i = 1; i <= n; ++i) {
    in >> stram[0][i];
  }
  for(int i = 1; i <= 18; ++i) {
    for(int j = 1; j <= n; ++j) {
      stram[i][j] = stram[i - 1][stram[i - 1][j]];
    }
  }
  for(int nrq = 0; nrq < m; ++nrq) {
    in >> q >> p;
    for(int pp = 0; p > 0; p >>= 1, ++pp) {
      if(p & 1) {
        q = stram[pp][q];
      }
    }
    ou << q << '\n';
  }
  return 0;
}