Pagini recente » Cod sursa (job #1499430) | Cod sursa (job #1613657) | Cod sursa (job #2703256) | Cod sursa (job #649707) | Cod sursa (job #2766362)
#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){
int stramos=q,ct=0;
while(p){
if(p%2==1){
stramos=rmq[ct][stramos];
}
p/=2;
ct++;
}
return stramos;
}
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';
}
}