Cod sursa(job #3124932)

Utilizator GFA03Gavrila Florin-Alexandru GFA03 Data 30 aprilie 2023 16:16:47
Problema Stramosi Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.81 kb
//
// Created by gfa on 4/28/23.
//

#include <bits/stdc++.h>

std::ifstream fin("stramosi.in");
std::ofstream fout("stramosi.out");

int d[250005][50];

int search(int x, int y){

    int h = y, node = x, temp;
    while(h > 0){
        temp = (int)log2(h);
        node = d[node][temp];
        if(node == 0)
            return 0;
        h -= std::pow(2, temp);
    }
    return node;
}

int main(){
    int n, k;
    fin >> n >> k;
    fin >> d[1][0];
    for(int i = 2; i <= n; ++i) {
        fin >> d[i][0];
        for(int j = 1; ; ++j) { 
            d[i][j] = d[d[i][j-1]][j-1];
            if(d[i][j] == 0)
                break;
        }
    }
    int x, y;
    for(int queries = 1; queries < k; ++queries) {
        fin >> x >> y;
        fout << search(x, y) << '\n';
    }
    fin >> x >> y;
    fout << search(x, y);
}