Cod sursa(job #3230227)

Utilizator tobiasSpartanu89Rosianu Radu tobiasSpartanu89 Data 20 mai 2024 02:17:07
Problema Stramosi Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.66 kb
#include <iostream>
#include <algorithm>
#include <fstream>

std::ifstream f("stramosi.in");
std::ofstream g("stramosi.out");

int N,M, anc[250005][17], E[250005];

int main() {
    f >> N >> M;
    for(int i = 1; i <= N; ++i)
        f >> anc[i][0];

    for (int p = 1; (1<<p) <= N; ++p)
        for(int i = 1; i <= N; ++i)
            anc[i][p] = anc[anc[i][p-1]][p-1];

    E[1] = 0;
    for (int i = 2; i <= N; ++i)
        E[i] = 1 + E[i/2];

    for (; M>0; --M){
        int member, k;
        f >> member >> k;
        while (k){
            member = anc[member][E[k]];
            k -= (1<<E[k]);
        }
        std::cout << member << "\n";

    }

    return 0;
}