Cod sursa(job #3230229)

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

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

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

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

    for (int p = 1; p <= 18; ++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]);
        }
        g << member << "\n";

    }

    return 0;
}