Cod sursa(job #2021154)

Utilizator vlasiuflaviusVlasiu Flavius vlasiuflavius Data 12 septembrie 2017 19:24:39
Problema Stramosi Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.85 kb
#include <bits/stdc++.h>
using namespace std;
ofstream fout ("stramosi.out");
ifstream fin ("stramosi.in");
int rsp[17][250005],lg[250005],i,j,n,m,aux,p,q,suma;
int main()
{
    fin>>n>>m;
    for( i = 1 ; i <= n ; i++ )
        fin>>rsp[ 0 ][ i ];
    for( i = 2 ; i <= 250000 ; i++ )
        lg[ i ] = lg[ i / 2 ] + 1;
    for( i = 1 ; i <= 16 ; i++ )
    {
        for( j = 1 ; j <= n ; j++ )
        {
            rsp[ i ][ j ] = rsp[ i - 1 ][ rsp[ i - 1 ][ j ] ];
        }
    }
    for( i = 1 ; i <= m ; i++ )
    {
        fin>>p>>q;
        suma = q;
        while( suma )
        {
            aux = lg[ suma ];
            suma -= ( 1 << aux );
            if( suma == 0 )
            {
                fout<<rsp[ aux ][ p ]<<'\n';
                break;
            }
            p = rsp[ aux ][ p ];
        }
    }
}