Cod sursa(job #2052824)

Utilizator LeVladzCiuperceanu Vlad LeVladz Data 31 octombrie 2017 08:09:58
Problema Stramosi Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.68 kb
#include <fstream>

using namespace std;

ifstream fin("stramosi.in");
ofstream fout("stramosi.out");

int n,m,i,j,l[250001],d[250001][22],x,y;

int main()
{
    fin >> n >> m;
    //D[nod][d] = al 2 la d-lea stramos al lui nod
    for (i=1; i<=n; i++)
    {
        fin >> x;
        d[i][0] = x;
    }
    for (i=2; i<=n; i++)
        l[i] = l[i/2]+1;
    for (i=1; i<=n; i++)
        for (j=1; (1<<j)<=n; j++)
            d[i][j] = d[d[i][j-1]][j-1];
    for (;m--;)
    {
        fin >> x >> y;
        while (y != 0 && x != 0)
        {
            x = d[x][l[y]];
            y -= (1<<l[y]);
        }
        fout << x << "\n";
    }
    return 0;
}