Cod sursa(job #2751097)

Utilizator radu_gGeorgescu Radu radu_g Data 14 mai 2021 10:37:39
Problema Stramosi Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.92 kb
#include <bits/stdc++.h>

using namespace std;


int arbore[50][250001]={0}, N, M, persoana, nr;

void creare_arbore()
{
    for (int i = 1; pow(2,i) <= N; i++)
    {
        for (int j = 1; j <= N; j++)
        {
            arbore[i][j] = arbore[i - 1][arbore[i - 1][j]];
        }
    }


}

int cauta_stramos(int persoana, int nr)
{
    int i=0;
    while (nr)
    {
        if (nr % 2 == 1)  ///verificare daca s-a ajuns la tata
        {
            persoana = arbore[i][persoana];
        }
        
        nr /= 2;
        i++;
    }
    return persoana;
}

int main()
{ifstream fin("zeap.in");
ofstream fout("zeap.out");

fin>>N>>M;

for (int i = 1; i <= N; i++)
    {
    fin>>persoana;
    arbore[0][i] = persoana;
    }

creare_arbore();

for (int i = 1; i <= M; i++)
    {
        fin>>persoana>>nr;
        fout<<cauta_stramos(persoana, nr)<<endl;
    }
	return 0;
}