Pagini recente » Concursuri Virtuale | Istoria paginii runda/testprob | Istoria paginii utilizator/aryaman2020 | Diferente pentru downloads intre reviziile 180 si 179 | Cod sursa (job #2363670)
#include<fstream>
using namespace std;
ifstream cin("stramosi.in");
ofstream cout("stramosi.out");
int str[250005],dp[250005][18];
int N,M,Q,P,p,nr;
int main(){
cin>>N>>M;
for(int i=1;i<=N;i++)
cin>>str[i];
for(int i=1;i<=N;i++)
dp[i][0]=str[i];
for(int i=1;i<=N;i++)
for(int k=1;k<=17;k++)
if(dp[i][k-1] && (1<<k)<=N)
dp[i][k]=dp[dp[i][k-1]][k-1];
else break;
for(int i=1;i<=M;i++){
cin>>Q>>P;
for(p=1,nr=0;p<=P;p<<=1,++nr)
if(P&p)
Q=dp[Q][nr];
cout<<Q<<'\n';
}
}