Pagini recente » Cod sursa (job #2801091) | Cod sursa (job #1318725) | Cod sursa (job #2254587) | Cod sursa (job #2809068) | Cod sursa (job #2649532)
#include <fstream>
#include <cmath>
using namespace std;
ifstream cin("stramosi.in");
ofstream cout("stramosi.out");
int N, str[250100][20], lim;
inline void rmqish()
{
for(int exp=1; exp<=lim; ++exp)
for(int j=1; j<=N; ++j)
str[j][exp]=str[str[j][exp-1]][exp-1];
}
int main()
{
int M,x,Q,P;
cin>>N>>M;
lim=log2(N);
for(int i=1; i<=N; ++i) {
cin>>x;
str[i][0]=x;
}
rmqish();
for(int i=1; i<=M; ++i) {
cin>>Q>>P;
if(P>N) {
cout<<0<<'\n';
continue;
}
x=Q;
for(int j=lim+1; j>=0 && P; --j)
if((1<<j)<=P) {
x=str[x][j];
P-=(1<<j);
}
cout<<x<<'\n';
}
return 0;
}