Cod sursa(job #3134286)

Utilizator Adela_PetrePetre Adela Adela_Petre Data 28 mai 2023 20:43:29
Problema Stramosi Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.82 kb
#include <fstream>
#include <iostream>
using namespace std;
ifstream in("stramosi.in");
ofstream out("stramosi.out");

int str[250001][18];
int membru, rang;
int main(){
    int N, M;
    in >> N >> M;
    for (int i = 1; i <= N; i++){
        in >> str[i][0];//retinem stramosii directi
    }

    for (int i = 1; (1 << i) <= N; i++)
        for (int j = 1; j <= N; j++){
            str[j][i] = str[str[j][i - 1]][i - 1]; //stramosul 2*n al lui j este stramosul n al stramosului n al lui j
    }
    int j;
    for (int i = 1; i <= M; i++){
        j = 0;
        in >> membru >> rang;
        while (rang){
            if (rang & 1) membru = str[membru][j];
            rang = (rang >> 1);
            j++;
        }
        out << membru << '\n';
    }

    in.close();
    out.close();
    return 0;
}