Pagini recente » Cod sursa (job #56051) | Cod sursa (job #2363023) | Cod sursa (job #478137) | Cod sursa (job #2043696) | Cod sursa (job #3152013)
#include <fstream>
#include <iostream>
using namespace std;
ifstream in("stramosi.in");
ofstream out("stramosi.out");
#define nmax 250000
#define logmax 18
int str[nmax];
int rmq[logmax][nmax];
int main(){
int n,m;
in>>n>>m;
for(int i=0;i<n;i++){
in>>str[i];
}
//rmq
for(int i=0;i<n;i++){
rmq[0][i]=str[i];
}
int k=1;
for(int i=1;k<=n;i++){
for(int j=0;j<n;j++){
rmq[i][j]=rmq[i-1][rmq[i-1][j]-1];
}
k<<=1;
}
int p,q;
for(int i=0;i<m;i++){
in>>q>>p;
for(int j=0;p>0;j++,p>>=1){
if(p%2==1){
q=rmq[j][q-1];
}
}
out<<q<<"\n";
}
}