Pagini recente » Cod sursa (job #1515265) | Cod sursa (job #1885134) | Cod sursa (job #172873) | Istoria paginii runda/cnmnarad2 | Cod sursa (job #131680)
Cod sursa(job #131680)
# #include <stdio.h>
# #include <fstream>
# using namespace std;
#
# #define in "stramosi.in"
# #define out "stramosi.out"
# #define dim 250001
#
# int N, M;
# int A[20][dim]; // A[i][j] - al 2^i-lea stramos a lui j
# int K;
#
# int Search(int,int);
#
# 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 < 19; i++ )
# for ( int j = 1; j <= N; j++ )
# A[i][j] = A[i-1][ A[i-1][j] ];
#
# for ( ; M; M-- )
# {
# scanf("%d%d", &X, &Y);
# printf("%d\n", Search(X,Y) );
# }
# }
#
# int Search(int X, int Y)
# {
# K = 18;
# while ( (1<<K) > Y ) --K;
#
# Y -= (1<<K);
#
# if ( !Y ) return A[K][X];
# return Search( A[K][X], Y );
# }