Cod sursa(job #3134377)

Utilizator alexandramocanu181Mocanu Alexandra alexandramocanu181 Data 28 mai 2023 22:36:53
Problema Stramosi Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.91 kb
#include <iostream>
#include <fstream>
#include <vector>
#include <cmath>

using namespace std;

int main() {
    ifstream inputFile("stramosi.in");
    ofstream outputFile("stramosi.out");

    int n, m;
    inputFile >> n >> m;

    vector<vector<int>> ancestors(n + 1, vector<int>(19));

    for (int i = 1; i <= n; i++) {
        inputFile >> ancestors[i][0];
    }

    for (int j = 1; j < 19; j++) {
        for (int i = 1; i <= n; i++) {
            ancestors[i][j] = ancestors[ancestors[i][j - 1]][j - 1];
        }
    }

    for (int k = 0; k < m; k++) {
        int p, q;
        inputFile >> p >> q;

        for (int i = 18; i >= 0; i--) {
            if (q >= (1 << i)) {
                p = ancestors[p][i];
                q -= (1 << i);
            }
        }

        outputFile << p << "\n";
    }

    inputFile.close();
    outputFile.close();

    return 0;
}