Cod sursa(job #3134205)

Utilizator Andrei20035Rusu Andrei Andrei20035 Data 28 mai 2023 18:39:16
Problema Stramosi Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.83 kb
#include <fstream>

using namespace std;

ifstream inputFile("stramosi.in");
ofstream outputFile("stramosi.out");

void buildMatrix(int n, int ancestors[250001][22])
{
    for (int j = 1; j <= 21; j++)
        for (int i = 1; i <= n; i++)
            ancestors[i][j] = ancestors[ancestors[i][j - 1]][j - 1];
}

void query(int z, int &k, int ancestors[250001][22])
{
    for (int j = 21; j >= 0; j--)
        if ((z >> j) & 1)
            k = ancestors[k][j];
}

int main()
{
    int n, m, z, k, i;
    inputFile >> n >> m;
    int ancestors[250001][22];

    for (i = 1; i <= n; i++)
        inputFile >> ancestors[i][0];

    buildMatrix(n, ancestors);

    for (i = 1; i <= m; i++)
    {
        inputFile >> k >> z;
        query(z, k, ancestors);
        outputFile << k << '\n';
    }

    return 0;
}