Cod sursa(job #162123)

Utilizator ViksenVictor-Nicolae Savu Viksen Data 19 martie 2008 15:04:36
Problema Stramosi Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.66 kb
#include <iostream>

int A[18][250001],T[250001];
int main()
{
    int n,m,i,ok,p;
    freopen ( "stramosi.in" , "r" , stdin );
    scanf ( "%d %d" , &n , &m );
    for ( i=1 ; i<=n ; i++ )
        scanf ( "%d" , &T[i] );
    for ( i=1 ,ok=0; i<=n ; i++ ) ok|=A[0][i]=T[T[i]];
    for ( p=1 ; ok ; p++ )
        for ( ok=i=0 ; i<=n ; i++ ) ok|=A[p][i]=A[p-1][A[p-1][i]];
    freopen ( "stramosi.out" , "w" , stdout );
    while (m--)
    {
        scanf ( "%d %d" , &i , &ok );
        for ( p=0 ; ok&&i ; ok>>=1,p++ )
            if (ok&1) i=A[p][i];
        printf ( "%d\n" , i );
    }
    fclose ( stdout );
    fclose ( stdin );
    return 0;
}