Pagini recente » Cod sursa (job #612231) | Cod sursa (job #1788282) | Cod sursa (job #945279) | Cod sursa (job #1226042) | Cod sursa (job #3301713)
#include <fstream>
#include <vector>
using namespace std;
ifstream fin("stramosi.in");
ofstream fout("stramosi.out");
int rmq[250001][18];
void build(int n){
for(int i=1;i<=17;i++){
for(int j=1;j<=n;j++){
rmq[j][i] = rmq[rmq[j][i-1]][i-1];
}
}
}
void qeu(int nod,int p){
for(int i=17;i>=0;i--){
if((p & (1 << i)))
nod = rmq[nod][i];
}
fout<<nod<<'\n';
}
int main()
{
int n,m;
fin>>n>>m;
for(int i=1;i<=n;i++){
int tata;
fin>>tata;
rmq[i][0] = tata;
}
rmq[0][0] = 0;
build(n);
while(m--){
int q,p;
fin>>q>>p;
qeu(q,p);
}
return 0;
}