Pagini recente » Cod sursa (job #2443219) | Cod sursa (job #481533) | Cod sursa (job #2619614) | Cod sursa (job #2709503) | Cod sursa (job #1836770)
#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;
}