Cod sursa(job #3171412)

Utilizator FulopSergiuFulop Sergiu FulopSergiu Data 18 noiembrie 2023 20:17:55
Problema Stramosi Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.82 kb
#include <fstream>
using namespace std;

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

const int MAX_N = 250000;
int lg2[MAX_N + 5];
int stramos[18][MAX_N + 5];
int N, M;

int main()
{
    fin >> N >> M;

    for (int i = 1; i <= N; ++i)
        fin >> stramos[0][i];

    lg2[0] = lg2[1] = 0;
    for (int i = 2; i <= N; ++i)
        lg2[i] = lg2[(i >> 1)] + 1;

    for (int i = 1; i <= lg2[N]; ++i)
        for (int j = 1; j <= N; ++j)
            stramos[i][j] = stramos[i - 1][stramos[i - 1][j]];

    int p, nod, i;
    while (M--)
    {
        fin >> nod >> p;

        i = 0;
        while (p)
        {    
            if (p & 1)
                nod = stramos[i][nod];

            i++;
            p >>= 1;
        }

        fout << nod << '\n';
    }

    return 0;
}