Pagini recente » Cod sursa (job #74649) | Cod sursa (job #1387650) | Cod sursa (job #2114832) | Cod sursa (job #27759) | Cod sursa (job #131406)
Cod sursa(job #131406)
#include <stdio.h>
#include <fstream>
using namespace std;
#define in "stramosi.in"
#define out "stramosi.out"
#define dim 250000
int N, M;
int A[20][dim]; // A[i][j] - al 2^i-lea stramos a lui j
int main()
{
int X, Y;
freopen(in,"r",stdin);
freopen(out,"w",stdout);
scanf("%d%d", &N, &M);
for ( int i = 1; i <= N; i++ )
{
scanf("%d", &X);
A[0][i] = X;
}
for ( int i = 1; i <= N; i++ )
for ( int j = 1; j <= 19; j++ )
A[i][j] = A[i-1][ A[i-1][j] ];
//printf("%d %d", A[0][5], A[1][5] );
for ( ; M; M-- )
{
scanf("%d%d", &X, &Y);
int k = 19;
while ( Y )
{
while ( (1<<k) > Y ) --k;
Y -= (1<<k);
X = A[k][X];
//printf(" | %d %d %d |", X, Y, k );
}
printf("%d\n", X);
}
}