Cod sursa(job #3133591)

Utilizator dariutTache Daria dariut Data 26 mai 2023 11:03:49
Problema Stramosi Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.74 kb
#include <fstream>
#include <cmath>

using namespace std;


int n, m, q, p;
int DP[20][250005];

int stramos(int q, int p) {
    int i = 0;
    while (p != 0) {
        if (p % 2 != 0)
            q = DP[i][q];
        p = (p >> 1);
        i++;
    }
    return q;
}

int main()
{

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

    fin >> n >> m;
    for (int i = 1; i <= n; i++)
        fin >> DP[0][i];

    int length = static_cast<int>(log2(n));

    for (int i = 1; i <= length; i++)
        for (int j = 1; j <= n; j++)
            DP[i][j] = DP[i - 1][DP[i - 1][j]];

    for (int i = 1; i <= m; i++) {
        fin >> q >> p;
        fout << stramos(q, p) << '\n';
    }
    return 0;
}