Cod sursa(job #2523961)

Utilizator viftode4Iftode Vlad viftode4 Data 14 ianuarie 2020 21:35:43
Problema Stramosi Scor 80
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.73 kb
#include <bits/stdc++.h>
using namespace std;
ifstream fin( "stramosi.in" );
ofstream fout( "stramosi.out" );
int n, m, nod, ord;
int q[300010];
int s[250010][40];
int main()
{
    fin >> n >> m;

    for( int i = 1; i <= n; i++ )
        {
            fin >> q[i];
            s[i][0] = q[i];
        }

    for( int k = 1; ( 1 << k ) <= n; k++ )
        for( int i = 1; i <= n; i++ )
            s[i][k] = s[s[i][k - 1]][k - 1];

    for( int i = 1; i <= m; i++ )
        {
            fin >> nod >> ord;

            for( int cat = 0; ( 1 << cat ) <= ord; cat ++ )
                if( ord & ( 1 << cat ) )
                    nod = s[nod][cat];

            fout << nod << '\n';
        }

    return 0;
}