Cod sursa(job #2869504)

Utilizator matei8787Matei Dobrea matei8787 Data 11 martie 2022 16:17:42
Problema Stramosi Scor 90
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.82 kb
#include<bits/stdc++.h>
using namespace std;
ifstream in("stramosi.in");
ofstream out("stramosi.out");
int t[250005][__lg(250005) + 1], n, m, p, q;
void citire()
{
    in>>n>>m;
    for ( int i = 1 ; i <= n ; i++ )
    {
        in>>t[i][0];
    }
}
void make_restul_t()
{
    for ( int j = 1 ; (1<<j) <= n ; j++ )
    {
        for ( int i = 1 ; i <= n ; i++ )
        {
            t[i][j] = t[t[i][j-1]][j-1];
        }
    }
}
void rez()
{
    for ( int i = 1 ; i <= m ; i++ )
    {
        in>>p>>q;
        int nod = p;
        for ( int j = 0 ; (1<<j) <= q ; j++ )
        {
            if ( (1<<j) & q )
            {
                nod = t[nod][j];
            }
        }
        out<<nod<<'\n';
    }
}
int main()
{
    citire();
    make_restul_t();
    rez();
    return 0;
}