Cod sursa(job #3144819)

Utilizator Traian_7109Traian Mihai Danciu Traian_7109 Data 10 august 2023 19:43:03
Problema Stramosi Scor 60
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.1 kb
#include <bits/stdc++.h>

using namespace std;

const int LOGMAX = 10, NMAX = 250000;
int ancestor[LOGMAX + 5][NMAX + 5];

class Query {
    private:
        int node, number;
        
        void reset() {
            
        }
        
        void read() {
            cin >> node >> number;
        }
        
        void solve() {
            for (int i = 0; (1 << i) <= number; i++)
                if (number & (1 << i))
                    node = ancestor[i][node];
            cout << node << '\n';
        }
    
    public:
        Query() {
            reset(), read(), solve();
        }
};

int main() {
    #ifndef TEST 
        freopen("stramosi.in", "r", stdin);
        freopen("stramosi.out", "w", stdout);
    #endif
    ios_base :: sync_with_stdio(false);
    cin.tie(nullptr), cout.tie(nullptr);
    
    int t = 1, n;
    cin >> n >> t;
    for (int i = 1; i <= n; i++)
        cin >> ancestor[0][i];
    for (int i = 1; (1 << i) <= n; i++)
        for (int j = 1; j <= n; j++)
            ancestor[i][j] = ancestor[i - 1][ancestor[i - 1][j]];
    while (t--)
        Query query;
    return 0;
}