Cod sursa(job #3338010)

Utilizator 0021592Grecu rares 0021592 Data 31 ianuarie 2026 10:23:58
Problema Stramosi Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.65 kb
#include <fstream>
#include <cmath>
using namespace std;
ifstream in("stramosi.in");
ofstream out("stramosi.out");
int far[19][250010], i, j, lgmax, a, b, n, q;
int main()
{
    in >> n >> q;
    lgmax = log2(n);
    for (i = 1; i <= n; i++)
        in >> far[0][i];
    for (i = 1; (1<<i) <= n; i++)
        for (j = 1; j <= n; j++)
            far[i][j] = far[i-1][far[i-1][j]];
    while(q)
    {
        --q;
        in >> a >> b;
        for (i = lgmax; i >= 0; i--)
            if (((1<<i)&b) != 0)
            {
                a = far[i][a];
                b ^= (1<<i);
            }
        out << a << '\n';
    }
    return 0;
}