Cod sursa(job #3285831)

Utilizator 1gbr1Gabara 1gbr1 Data 13 martie 2025 15:07:12
Problema Stramosi Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.71 kb
#include <iostream>
#include <random>
#include <fstream>
#include <stack>
#include <bitset>

using namespace std;

int dp[19][250001]; ///dp[i][j] = al 2^i-lea stramos al nodului j

int main() {
    ifstream fin("stramosi.in");
    ofstream fout("stramosi.out");
    int n, q;
    fin >> n >> q;
    for (int i = 1; i <= n; i++)
        fin >> dp[0][i];
    for (int i = 1; (1 << i) <= n; i++)
        for (int j = 1; j <= n; j++)
            dp[i][j] = dp[i - 1][dp[i - 1][j]];
    while (q--)
    {
        int p, x;
        fin >> x >> p;
        for (int i = 0; (1 << i) <= p; i++)
            if ((1 << i) & p)
                x = dp[i][x];
        fout << x << "\n";
    }
    return 0;
}