Cod sursa(job #3134194)

Utilizator daria_lapadusLapadus Daria daria_lapadus Data 28 mai 2023 18:18:20
Problema Stramosi Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.84 kb
#include <fstream>

using namespace std;

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

int N, M, i, k;
int arboriGenealogici[20][250002];

int gasesteStramos(int a, int k)
{
    if (k == 0)
        return a;
    else
    {
        int p = 18;
        while ((1 << p) > k)
            p--;
        k -= (1 << p);
        gasesteStramos(arboriGenealogici[p][a], k);
    }
}

int main()
{
    f >> N >> M;

    for (i = 1; i <= N; i++)
        f >> arboriGenealogici[0][i];

    for (k = 1; k <= 18; k++)
    {
        for (i = 1; i <= N; i++)
        {
            arboriGenealogici[k][i] = arboriGenealogici[k - 1][arboriGenealogici[k - 1][i]];
        }
    }
    while (M--)
    {
        f >> k >> i;
        g << gasesteStramos(k, i) << '\n';
    }

    f.close();
    g.close();

    return 0;
}