Pagini recente » Cod sursa (job #73016) | Cod sursa (job #2230794) | Cod sursa (job #3256437) | Cod sursa (job #1184973) | Cod sursa (job #2975538)
//
// main.cpp
// Stramosi
//
// Created by Andrei Bădulescu on 03.02.23.
//
//#include <iostream>
#include <fstream>
using namespace std;
ifstream cin("stramosi.in");
ofstream cout("stramosi.out");
const int N = 250000;
int predecessor[N + 1][20];
int n, m;
int main() {
cin >> n;
cin >> m;
for (auto i = 1; i <= n; i++) {
cin >> predecessor[i][0];
}
// PRECALCULARE
int copyN = n / 2;
for (auto power = 1; copyN >= 1; power++) {
for (auto i = 1; i <= n; i++) {
predecessor[i][power] = predecessor[predecessor[i][power - 1]][power - 1];
}
copyN /= 2;
}
// PRECALCULARE
for (auto i = 1; i <= m; i++) {
int index, query;
cin >> index >> query;
int j = 18;
int current = 0;
while (current < query) {
if ((1 << j) + current <= query) {
index = predecessor[index][j];
current += (1 << j);
}
j--;
}
cout << index << ' ';
}
return 0;
}