Cod sursa(job #2773877)

Utilizator Stefan_BerlinschiStefan-Cristian Berlinschi Stefan_Berlinschi Data 9 septembrie 2021 08:41:11
Problema Stramosi Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.91 kb
#include <iostream>
#include <fstream>

using namespace std;

// ifstream fin("intrare.txt");
// ofstream fout("iesire.txt");

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

int log2(int x) {
    return (x > 1) ? 1 + log2(x/2) : 0;
}

int main() {
    int n, m;
    fin >> n >> m;

    int p = log2(n);
    int stramosi[p+1][n+1] = {0};

    for (int i = 1; i <= n; i++) {
        fin >> stramosi[0][i];
    }

    for (int i = 1; i <= p; i++) {
        stramosi[i][0] = 0;
        for (int j = 1; j <= n; j++) {
            stramosi[i][j] = stramosi[i-1][stramosi[i-1][j]];
        }
    }

    int q;
    for (int i = 0; i < m; i++) {
        fin >> q >> p;

        int aux = q;
        while(p != 0) {
            int exp = log2(p);
            aux = stramosi[exp][aux];
            p -= (1 << exp);
        }

        fout << aux << '\n';
    }

    return 0;
}