Pagini recente » Cod sursa (job #1540452) | Cod sursa (job #159777) | Cod sursa (job #2148256) | Monitorul de evaluare | Cod sursa (job #1881316)
#include <fstream>
using namespace std;
ifstream f("stramosi.in");
ofstream g("stramosi.out");
int v[25][250010],i,j,n,m,lg[250005],q1,q2,k,li;
int rez(int membru, int stramos)
{
if(stramos==0)
return membru;
k=lg[stramos];
li=lg[stramos];
k=1<<(k-1);
return rez (v[li][membru], stramos-k);
}
int main()
{
f>>n>>m;
for(i=1;i<=n;i++)
f>>v[1][i];
lg[1]=1;
for(i=2;i<=250004;i++)
lg[i]=lg[i/2]+1;
for(i=2;i<=lg[n];i++)
for(j=1;j<=n;j++)
v[i][j]=v[i-1][v[i-1][j]];
for(i=1;i<=m;i++)
{
f>>q1>>q2;
g<<rez(q1,q2)<<'\n';
}
return 0;
}