Cod sursa(job #2759075)

Utilizator CRazvaN6Cutuliga Razvan CRazvaN6 Data 15 iunie 2021 11:24:35
Problema Stramosi Scor 90
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.86 kb
#include <bits/stdc++.h>
using namespace std;

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

int d[250001][19],t[250001];
int n, m;
int stramos(int nod, int jump)
{
    int put = 20;
    while(put >= 0)
    {
            if((1 << put) <= jump)
            {
                nod = d[nod][put];
                jump -= (1 << put);
            }
        put -= 1;
    }
    return nod;

}
int main()
{
    f >> n >> m;
    for(int nod = 1; nod <= n; ++nod)
    {
        int tata;
        f >>  tata;
        t[nod] = tata;
        d[nod][0] = t[nod];
    }
    for(int i = 1; i < 19; ++i)
    {
        for(int nod = 1; nod <= n; ++nod)
            d[nod][i] = d[d[nod][i-1]][i-1];
    }
    for(int i = 1; i <= m; ++i)
    {
        int q, p;
        f >> q >> p;
        g << stramos(q, p) << '\n';
    }
    return 0;
}