Pagini recente » Cod sursa (job #1132171) | Cod sursa (job #3126545) | Cod sursa (job #838661) | Cod sursa (job #1945883) | Cod sursa (job #1799599)
#include <iostream>
#include <fstream>
#define Nmax 250005
using namespace std;
ifstream fin("stramosi.in");
ofstream fout("stramosi.out");
int TT[Nmax][20],N,M,Log[Nmax];
void precalc()
{
for(int i=2;i<=Nmax;i++)
Log[i]=Log[i/2]+1;
for(int j=1;j<=Log[N];j++)
for(int i=1;i<=N;i++)
TT[i][j]=TT[TT[i][j-1]][j-1];
}
int check(int nod,int p)
{
while(p>0)
{
nod=TT[nod][Log[p]];
p-=(1<<Log[p]);
}
return nod;
}
void read()
{
fin>>N>>M;
for(int i=1;i<=N;i++)
fin>>TT[i][0];
precalc();
for(int i=1;i<=M;i++)
{
int x,y;
fin>>x>>y;
fout<<check(x,y)<<"\n";
}
}
int main()
{
read();
return 0;
}