Cod sursa(job #2153599)

Utilizator stefan_creastaStefan Creasta stefan_creasta Data 6 martie 2018 12:33:59
Problema Stramosi Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.62 kb
#include <cstdio>
using namespace std;
const int NMAX = 250005;
int stram[NMAX][20];

int main() {
  int n, m;
  freopen("stramosi.in", "r", stdin);
  freopen("stramosi.out", "w", stdout);
  scanf("%d%d", &n, &m);
  for(int i = 1; i <= n; ++i) {
    scanf("%d", &stram[i][0]);
  }
  for(int i = 1; 1 << i <= n; ++i) {
    for(int j = 1; j <= n; ++j) {
      stram[j][i] = stram[stram[j][i - 1]][i - 1];
    }
  }
  for(int nrq = 0; nrq < m; ++nrq) {
    int q, p;
    scanf("%d%d", &q, &p);
    for(int pp = 0; p > 0; p /= 2, ++pp) {
      if(p % 2 == 1) {
        q = stram[q][pp];
      }
    }
    printf("%d\n", q);
  }
  return 0;
}