Pagini recente » Cod sursa (job #2027003) | Cod sursa (job #2067349) | Cod sursa (job #792678) | Cod sursa (job #1149260) | Cod sursa (job #2121031)
#include <iostream>
#include <fstream>
using namespace std;
ifstream fin("stramosi.in");
ofstream fout("stramosi.out");
const int maxn=250005;
const int maxk=20;
int dp[maxk][maxn],n,m,f,l;
int stramos(int p,int q)
{
for(int bit=0;(1<<bit)<=n;++bit)
{
if(p &(1<<bit))
q=dp[bit][q];
}
return q;
}
int main()
{
fin>>n>>m;
for(int i=1;i<=n;i++)
fin>>dp[0][i];
//1<<i <= log2(n) <=> 1<=2^i<=n
for(int i=1;(1<<i)<=n;++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>>f>>l;
fout<<stramos(l,f)<<'\n';
}
return 0;
}