Pagini recente » Cod sursa (job #2206147) | Cod sursa (job #3288887) | Cod sursa (job #2252754) | Cod sursa (job #2576338) | Cod sursa (job #3231638)
#include <cstdint>
#include <fstream>
#define SIZE 250001
int main()
{
freopen("stramosi.in", "r", stdin);
setvbuf(stdout, NULL, _IONBF, 0);
freopen("stramosi.out", "w", stdout);
setvbuf(stderr, NULL, _IONBF, 0);
int32_t members, queries;
scanf("%d %d", &members, &queries);
int32_t tree_depth = 0;
int32_t ancestors[SIZE];
for (int32_t i = 1; i <= members; ++i) {
scanf("%d", &ancestors[i]);
tree_depth += (ancestors[i] == i - 1);
}
if (tree_depth == members) {
while (queries--) {
int32_t x, y;
scanf("%d %d", &x, &y);
printf("%d\n", ((x >= y) ? (x - y) : 0));
}
}
else {
while (queries--) {
int32_t x, y;
scanf("%d %d", &x, &y);
while (y-- && x) {
x = ancestors[x];
}
printf("%d\n", x);
}
}
return 0;
}