Cod sursa(job #2363930)

Utilizator YouDontNeedMyNameJurcut Paul YouDontNeedMyName Data 3 martie 2019 19:02:58
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 in("stramosi.in");
ofstream out("stramosi.out");
int n,m;
int dp[250005][19];
int lg(int x)
{
    int nr=0;
    while(x)
    {
        nr++;
        x/=2;
    }
    return nr-1;
}
int query(int poz, int nod)
{
    for(int i=0; (1<<i)<=poz; i++)
    {
        if(poz&(1<<i))
        {
            nod=dp[nod][i];
            if(nod==0)
                return 0;
        }
    }
    return nod;
}
int main()
{
    in >> n >> m;
    for(int i=1; i<=n; i++)
    {
        in >> dp[i][0];
    }
    int p=1;
    for(int i=1; i<18; i++)
    {
        for(int j=1; j<=n; j++)
        {
            dp[j][i]=dp[dp[j][i-1]][i-1];
        }
    }
    for(int i=1; i<=m; i++)
    {
        int x,poz;
        in >> x >> poz;
        out << query(poz,x) << '\n';
    }
    return 0;
}