Cod sursa(job #2901210)

Utilizator popescumateicalinPopescu Matei Calin popescumateicalin Data 13 mai 2022 12:15:15
Problema Stramosi Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.05 kb
#include <iostream>
#include <fstream>

#define MAXN 400000
#define LOG 25

std::ifstream in("stramosi.in");
std::ofstream out("stramosi.out");

int n, m, a[LOG][MAXN], q, p;
// Care este al P-lea stramos al membrului cu numarul Q?
// 5 2
// Care este al 2-lea stramos al membrului cu numarul 5?
int main()
{
    in >> n >> m;
    for (int i = 1; i <= n; i++)
    {
        a[0][i] = i;
        in >> a[1][i];
    }

    for (int i = 2; i <= LOG; i++)
        for (int j = 1; j <= n; j++)
            a[i][j] = a[i - 1][a[i - 1][j]];

    /*for (int i = 1; i < 6; i++)
    {
        for (int j = 1; j <= n; j++)
            out << a[i][j] << ' ';
        out << '\n';
    }*/
    for (int i = 0; i < m; i++)
    {
        in >> q >> p;
        if (a[p][q] != 0)
            out << a[p][q] << '\n';
        else
            out << a[1][a[p - 1][q]] << '\n';
    }
    return 0;
}
// 0   1 2 3 4 5 6 7 8 9 10 11 12 13

// 1   0 1 2 2 4 1 6 0 8  8 10 10 12
// 2   0 0 1 1 2 0 1 0 0  0  8  8 10
// 3   0 0 0 0 0 0 0 0 0  0  0  0  0