Pagini recente » Cod sursa (job #3176804) | Cod sursa (job #2615777) | Cod sursa (job #833277) | Cod sursa (job #22276) | Cod sursa (job #3230229)
#include <iostream>
#include <algorithm>
#include <fstream>
std::ifstream f("stramosi.in");
std::ofstream g("stramosi.out");
int N,M, anc[250005][20], E[250005];
int main() {
f >> N >> M;
for(int i = 1; i <= N; ++i)
f >> anc[i][0];
for (int p = 1; p <= 18; ++p)
for(int i = 1; i <= N; ++i)
anc[i][p] = anc[anc[i][p-1]][p-1];
E[1] = 0;
for (int i = 2; i <= N; ++i)
E[i] = 1 + E[i/2];
for (; M>0; --M){
int member, k;
f >> member >> k;
while (k){
member = anc[member][E[k]];
k -= (1<<E[k]);
}
g << member << "\n";
}
return 0;
}