Pagini recente » Cod sursa (job #1703772) | Cod sursa (job #3238514) | Rating Dan Gaspar (danhepai) | Cod sursa (job #726497) | Cod sursa (job #2766360)
#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(){
int ct=1;
for(int ex=1;ex*2<=n;ex++){
for(int i=1;i<=n;i++)
rmq[ct][i]=rmq[ct-1][rmq[ct-1][i]];
ct++;
}
}
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';
}
}