Pagini recente » Cod sursa (job #600669) | Cod sursa (job #2659240) | Cod sursa (job #441902) | Cod sursa (job #451481) | Cod sursa (job #2771559)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("stramosi.in");
ofstream fout("stramosi.out");
const int NMAX = 250005;
int dp[25][NMAX],n,m,q,p;
int main()
{
fin >> n >> m;
for(int i=1;i<=n;i++){
fin >> dp[0][i];
}
for(int i=1;i<=20;i++){
for(int j=1;j<=n;j++){
dp[i][j]=dp[i-1][dp[i-1][j]];
}
}
for(int i=1;i<=m;i++){
fin >> q >> p;
int nr=1,put=0;
while(nr<=p){
nr*=2;
put++;
}
if(put>20){
fout << 0 << '\n';
continue;
}
for(int j=put;j>=0;j--){
if(q==0) break;
if((1<<j)<=p){
q=dp[j][q];
p-=(1<<j);
}
}
fout << q << '\n';
}
return 0;
}