Cod sursa(job #3142746)

Utilizator Mihai_OctMihai Octavian Mihai_Oct Data 24 iulie 2023 10:31:11
Problema Stramosi Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.62 kb
#include <bits/stdc++.h>

using namespace std;

ifstream fin("stramosi.in");
ofstream fout("stramosi.out");
int n, q, i, j, x, y;

int main() {
    fin >> n >> q;
    vector<vector<int>> s(n + 2, vector<int>(20));
    for(i = 1; i <= n; i++) fin >> s[i][0];
    for(j = 1; j < 19; j++) {
        for(i = 1; i <= n; i++) s[i][j] = s[s[i][j - 1]][j - 1];
    }

    while(q--) {
        fin >> x >> y;
        for(i = 18; i >= 0; i--) {
            if(y >= (1 << i)) {
                x = s[x][i];
                y -= (1 << i);
            }
        }
        fout << x << "\n";
    }

    return 0;
}