Cod sursa(job #2901213)

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

#define MAXN 400000
#define MAXL 25

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

int n, m, a[MAXL][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 <= MAXL; 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;
        int nr = 1;
        while (p)
        {
            if (p % 2)
                q = a[nr][q];
            nr++;
            p /= 2;
        }
        out << 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