Cod sursa(job #1778973)

Utilizator isav_costinVlad Costin Andrei isav_costin Data 14 octombrie 2016 16:19:14
Problema Stramosi Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.71 kb
#include <cstdio>

int s[20][250001], n;

using namespace std;

void restramosare()
{
    int i, j;

    for( i=1;i<=18;i++ )
        for( j=1;j<=n;j++ )
            s[i][j]=s[i-1][s[i-1][j]];
}

inline int stramos( int str, int k )
{
    int i=0;

    while( k!=0 )
    {
        if( k%2==1 )
            str=s[i][str];

        k/=2;
        i++;
    }

    return str;
}

int main()
{
    freopen( "stramosi.in", "r", stdin );
    freopen( "stramosi.out", "w", stdout );

    int m, q, p, i;

    scanf( "%d%d", &n, &m );

    for( i=1;i<=n;i++ )
        scanf( "%d", &s[0][i] );

    restramosare();

    for( i=1;i<=m;i++ )
    {
        scanf( "%d%d", &q, &p );
        printf( "%d\n", stramos(q,p) );
    }
    return 0;
}