Pagini recente » Cod sursa (job #1941808) | Cod sursa (job #524092) | Cod sursa (job #3193036) | Cod sursa (job #2179768) | Cod sursa (job #3124520)
//
// Created by gfa on 4/28/23.
//
#include <bits/stdc++.h>
std::ifstream fin("stramosi.in");
std::ofstream fout("stramosi.out");
int d[250005][50];
int search(int x, int y){
int h = y, node = x, temp;
while(h > 0){
temp = (int)log2(h) + 1;
node = d[node][temp];
if(node == 0)
return 0;
h -= std::pow(2, temp-1);
}
return node;
}
int main(){
int n, k;
fin >> n >> k;
for(int i = 1; i <=n; ++i)
fin >> d[i][1];
for(int i = 1; i <= n; ++i) {
for(int j = 2; std::pow(2, j-1) <= i; ++j) {
d[i][j] = d[d[i][(int)std::pow(2, j-2)]][(int)std::pow(2, j-2)];
if(d[i][j] == 0)
break;
}
}
int x, y;
for(int queries = 1; queries <= k; ++queries) {
fin >> x >> y;
fout << search(x, y) << '\n';
}
}