Pagini recente » Profil fabogdan | Cod sursa (job #1179998) | Cod sursa (job #3224169) | Cod sursa (job #2720948) | Cod sursa (job #1350550)
#include <iostream>
#include <fstream>
#define Nmax 250001
#define Logmax 21
using namespace std;
ifstream fin("stramosi.in");
ofstream fout("stramosi.out");
int n,T[Logmax][Nmax];
int log[Nmax];
void BuildLog()
{
int i;
for(i=2;i<=Nmax;i++)
log[i]=log[i/2]+1;
}
void Stramos()
{
int i,j;
for(i=1;i<=log[n];i++)
for(j=1;j<=n;j++)
T[i][j]=T[i-1][T[i-1][j]];
}
void FindAncestor(int p,int q)
{
while(q>0)
{
p=T[log[q]][p];
q=q-(1<<log[q]);
}
fout<<p<<"\n";
}
void read()
{
int m;
fin>>n>>m;
int i,p,q;
for(i=1;i<=n;i++)
fin>>T[0][i];
BuildLog();
Stramos();
for(i=1;i<=m;i++)
{
fin>>p>>q;
FindAncestor(p,q);
}
}
int main()
{
read();
return 0;
}