Cod sursa(job #3232436)

Utilizator dragosf31Dragos dragosf31 Data 30 mai 2024 10:37:25
Problema Stramosi Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.76 kb
#include <fstream>
#include <vector>
using namespace std;

ifstream f("stramosi.in");
ofstream g("stramosi.out");

int n, m;

int main() {
    f >> n >> m;

    vector<int> a(n + 1);
    vector<int[19]> b(n + 1);

    for(int i = 1; i <= n; i++) {
        f >> a[i];
    }

    for(int i = 1; i <= n; i++) {
        b[i][0] = a[i];
    }

    for(int k = 1; k <= 18; k++) {
        for(int i = 1; i <= n; i++) {
            b[i][k] = b[b[i][k - 1]][k - 1];
        }
    }
    
    for(int i = 1; i <= m; i++) {
        int p, q;
        f >> q >> p;

        int aux = q;

        for(int i = 18; i >= 0; i--) {
            if((1 << i) & p) aux = b[aux][i];
        }
        
        g << aux << '\n';
    }
    

    return 0;
}