Pagini recente » Cod sursa (job #2890258) | Cod sursa (job #2942542) | Cod sursa (job #2317533) | Cod sursa (job #2263924) | Cod sursa (job #3231625)
#include <fstream>
int main()
{
std::ifstream fin("stramosi.in");
std::ofstream fout("stramosi.out");
int32_t members, queries;
fin >> members >> queries;
int32_t tree_depth = 0;
int32_t *ancestors = (int32_t *) malloc(sizeof(int32_t) * (members + 1));
for (int32_t i = 1; i <= members; ++i) {
fin >> ancestors[i];
tree_depth += (ancestors[i] == i - 1);
}
if (tree_depth == members) {
while (queries--) {
int32_t x, y;
fin >> x >> y;
fout << ((x >= y) ? (x - y) : 0) << '\n';
}
}
else {
while (queries--) {
int32_t x, y;
fin >> x >> y;
while (y-- && x) {
x = ancestors[x];
}
fout << x << '\n';
}
}
free(ancestors);
return 0;
}