Cod sursa(job #3164842)

Utilizator radu1331Mocan Radu radu1331 Data 4 noiembrie 2023 14:11:49
Problema Stramosi Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1 kb
#include <iostream>
#pragma GCC optimize("Ofast")
#pragma GCC target("avx,avx2,fma")

const int NMAX = 1e6 + 5;

int sm [ NMAX ];
int mat [ 18 ] [ NMAX ];

int main ( int argc, char *argv[] )
{
    ( void )! freopen ( "stramosi.in" , "r" , stdin );
    ( void )! freopen ( "stramosi.out" , "w" , stdout );
    std::ios_base::sync_with_stdio ( false );
    std::cin.tie ( NULL );
    
    int n, m; std::cin >> n >> m;
    for ( int i = 1; i <= n; ++ i ) std::cin >> sm [ i ], mat [ 0 ] [ i ] = sm [ i ];

    for ( int i = 1 ; i < 18; ++ i )
    {
         for ( int j = 1; j <= n; ++ j )
         {
              mat [ i ] [ j ] = mat [ i - 1 ] [ mat [ i - 1 ] [ j ] ];
         }
    }
        
    while ( m )
    {
        int p, q; std::cin >> q >> p;
        for ( int i = 0; i < 18; ++ i )
        {
            if ( p & ( 1 << i ) )
            {
                q = mat [ i ] [ q ];
            }
        }
        std::cout << q << '\n';
        -- m;
    }
    return 0;
}