Cod sursa(job #131680)

Utilizator mihai_floreaFlorea Mihai Alexandru mihai_florea Data 4 februarie 2008 12:50:22
Problema Stramosi Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.07 kb
# #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 );  
# }