Cod sursa(job #3301302)

Utilizator bogdan1479Luca Bogdan Alexandru bogdan1479 Data 24 iunie 2025 15:00:45
Problema Stramosi Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.7 kb
#include <fstream>

using namespace std;

const int NMAX = 250001, LOG2 = 21;

ifstream fin("stramosi.in");
ofstream fout("stramosi.out");

int n, m, t[LOG2][NMAX], lg[NMAX];

void citire()
{
    fin >> n >> m;
    lg[0] = -1;
    for(int i = 1; i <= n; ++i)
    {
        lg[i] = lg[i >> 1] + 1;
        fin >> t[0][i];
    }
    for(int k = 1; (1 << k) <= n; ++k)
        for(int i = 1; i <= n; ++i)
            t[k][i] = t[k - 1][t[k - 1][i]];
}

int query()
{
    int q, p;
    fin >> q >> p;
    while(p > 0)
    {
        q = t[lg[p]][q];
        p -= (1 << lg[p]);
    }
    return q;
}

int main()
{
    citire();
    while(m--) fout << query() << '\n';
    return 0;
}