Pagini recente » Cod sursa (job #3179395) | Cod sursa (job #25378) | Cod sursa (job #650469) | Cod sursa (job #1148467) | Cod sursa (job #2804106)
#include <fstream>
using namespace std;
ifstream cin("stramosi.in");
ofstream cout("stramosi.out");
int n,m;
const int NMax=250005;
int Log2[NMax],A[20][NMax];
int afla(int x,int y)
{
while(y)
{
int k=Log2[y];
x=A[k][x];
y=y-(1<<k);
}
return x;
}
int main()
{int i,j,x,y;
cin>>n>>m;
for(int i = 1; i <= n; ++i)
cin >> A[0][i];
for(i=2;i<=n;i++)
Log2[i]=Log2[i/2]+1;
for(i=1;(1<<i)<=n;i++)
{
for(j=1;j<=n;j++)
A[i][j]=A[i-1][A[i-1][j]];
}
for(i=1;i<=m;i++)
{
cin>>x>>y;
cout<< afla(x,y)<<'\n';
}
return 0;
}