Cod sursa(job #3231850)

Utilizator vladvoicux64Voicu Ioan Vladut vladvoicux64 Data 27 mai 2024 21:30:14
Problema Stramosi Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.73 kb
#include <iostream>
#include <fstream>
#include <vector>

int dp[25][250025];

int main() {
    std::ifstream input("stramosi.in");
    std::ofstream output("stramosi.out");

    int N, M;
    input >> N >> M;

    for (int i = 1; i <= N; ++i)
        input >> dp[0][i];

    for (int i = 1; i <= 19; ++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) {
        int p, q;
        input >> p >> q;

        while (q) {
            int power = 0;
            while ((1 << power) <= q) power++;
            power--;
            q -= (1 << power);
            p = dp[power][p];
        }

        output << p << '\n';
    }

    input.close();
    output.close();
    return 0;
}