Pagini recente » Cod sursa (job #3187010) | Cod sursa (job #3215139) | Cod sursa (job #3302249) | Cod sursa (job #3167854) | Cod sursa (job #3302246)
#include <bits/stdc++.h>
#define MAX 300000
using namespace std;
ifstream fin("stramosi.in");
ofstream fout("stramosi.out");
int n, m, i, x, y, r[MAX+5];
vector<int>v[MAX+5], s;
set<pair<int, int>>q[MAX+5];
void dfs(int nod) {
s.push_back(nod);
int lg=s.size();
for (auto x:q[nod]) r[x.second]=s[lg-1-min(x.first, lg-1)];
for (auto x:v[nod]) dfs(x);
s.pop_back();
}
int main()
{
fin>>n>>m;
for (i=1; i<=n; i++) {
fin>>x;
v[x].push_back(i);
}
for (i=1; i<=m; i++) {
fin>>x>>y;
q[x].insert({y, i});
}
dfs(0);
for (i=1; i<=m; i++) fout<<r[i]<<'\n';
return 0;
}