Pagini recente » Cod sursa (job #610286) | Cod sursa (job #59440) | Cod sursa (job #689299) | Cod sursa (job #2301182) | Cod sursa (job #2766361)
#include <bits/stdc++.h>
using namespace std;
ifstream fin ("stramosi.in");
ofstream fout("stramosi.out");
const int dim=550009;
int n,m;
int rmq[30][dim];
void generare(){
for(int i=1;i<=n;i++){
for(int j=1;(1<<j)<=n;j++){
rmq[j][i]=rmq[j-1][rmq[j-1][i]];
}
}
}
int Query(int q,int p){
for(int i=0;(1<<i)<=p;i++){
if((p&(1<<i))!=0)
q=rmq[i][q];
}
return q;
}
signed main(){
fin>>n>>m;
for(int i=1;i<=n;i++){
int x;
fin>>x;
rmq[0][i]=x;
}
generare();
for(int i=1;i<=m;i++){
int p,q;
fin>>q>>p;
fout<<Query(q,p)<<'\n';
}
}