Cod sursa(job #3327468)

Utilizator eric.mesterEric Mestereaga eric.mester Data 4 decembrie 2025 08:33:57
Problema Stramosi Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.73 kb
#include <bits/stdc++.h>
#define NMAX 250002
#define LOGMAX 18

using namespace std;

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

int N,Q;
int sparse[NMAX][LOGMAX + 2];

int go_up(int node,int steps)
{
    int lg = 0;
    while(steps > 0){
        if(steps&1){
            node = sparse[node][lg];
        }
        lg ++;
        steps >>= 1;
    }
    return node;
}

int main()
{
    fin >> N >> Q;
    for(int i=1;i<=N;i++){
        fin >> sparse[i][0];
    }
    for(int lg = 1;lg <=LOGMAX ; lg++){
        for(int i= N;i>=1;i--){
            sparse[i][lg] = sparse[sparse[i][lg-1]][lg-1];
        }
    }
    while(Q--){
        int node,steps;
        fin >> node >> steps;
        fout << go_up(node,steps) << "\n";
    }
}