Cod sursa(job #1397347)

Utilizator DysKodeTurturica Razvan DysKode Data 23 martie 2015 13:57:09
Problema Stramosi Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.79 kb
#include <fstream>
#include <iostream>

using namespace std;

#define DIM 250010
#define logDIM 22

ifstream in("stramosi.in");
ofstream out("stramosi.out");

int Str[logDIM][DIM],Lg[DIM],i,j,n,m,ans,x,y;

void caut(int x, int y)
{
    int aux,log2;
    if(y == 0)
        return;

    log2 = Lg[ y ];
    ans = Str[ log2 ][ x ];
    caut( Str[ log2 ][ x ] , y - ( 1 << log2) );
}

int main()
{
    in>>n>>m;

    for(i=1 ; i<=n ; ++i)
        in>>Str[0][i];

    for(i=2 ; i<=n ; ++i)
        Lg[ i ] = Lg[ i / 2 ] + 1;

    for(i=1 ; i<=Lg[n] ; ++i)
        for(j=1 ; j<=n ; ++j)
            Str[ i ][ j ] = Str[ i - 1 ][ Str[ i - 1 ][ j ] ];

    for(i=1 ; i<=m ; ++i)
    {
        in>>x>>y;
        caut( x , y );
        out<<ans<<'\n';
    }


return 0;
}