Cod sursa(job #3211681)

Utilizator profinfo114Prof Info profinfo114 Data 9 martie 2024 23:35:42
Problema Stramosi Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.13 kb
#include <bits/stdc++.h>
#define pii pair<int, int>
using namespace std;
const int BASE = 5;
const int NMAX = 25e4+2;
const int LMAX = 8;
int n,m,vf[NMAX],up[LMAX][NMAX];
vector<int> v[NMAX];

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

int main()
{
    fin >> n >> m;
    for(int i = 1; i <= n; i++){
        int x;
        fin >> x;
        if(x == 0){
            continue;
        }
        up[0][i] = x;
    }
    for(int i = 1; i < LMAX; i++){
        for(int j = 1; j <= n; j++){
            up[i][j] = up[i-1][j];
            for(int k = 1; k < BASE; k++){
                up[i][j] = up[i-1][up[i][j]];
            }
        }
    }
    auto query = [&](int nod, int k) -> int {
        int ans = nod;
        int pos = 0;
        while(k){
            int dig = k%BASE;
            for(int i = 1; i <= dig; i++){
                ans = up[pos][ans];
            }
            k /= BASE;
            pos++;
        }
        return ans;
    };
    for(int i = 1; i <= m; i++){
        int q, p;
        fin >> q >> p;
        fout << query(q, p) << "\n";
    }
    return 0;
}