Cod sursa(job #2433889)

Utilizator viftode4Iftode Vlad viftode4 Data 29 iunie 2019 17:15:14
Problema Stramosi Scor 80
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.66 kb
#include <bits/stdc++.h>
using namespace std;
ifstream fin ( "stramosi.in" );
ofstream fout ( "stramosi.out" );
int n, m, q, nod, ord;
int a[250010][30];
int main() {
    fin >> n >> q;

    for ( int i = 1; i <= n; i++ )
        fin >> a[i][0];

    for ( int cat = 1; ( 1 << cat ) <= n; cat++ )
        for ( int i = 1; i <= n; i++ )
            a[i][cat] = a[a[i][cat - 1]][cat - 1];

    for ( int t = 1; t <= q; t++ ) {
        fin >> nod >> ord;
        int anc = nod;

        for ( int cat = 16; cat >= 0; cat-- )
            if ( ( 1 << cat ) & ord )
                anc = a[anc][cat];

        fout << anc << '\n';
    }

    return 0;
}